Skip to main content

Full text of "ZXir QLive Alive"

See other formats


%l}£ Wxmzxl ^IntXm x ^vxt^Jkimxiain Mmx (&xxmp& Mziv&lMzx 

|, ''' ' gaBB8MBBI,WllllallB, ' IB,IWIMM I II i l Hi I Ml »"■' ""Tfrffft^tlHtit^^^ l l l 'i l W II H IimiMllHlHW 

™ > • "i ni i in i'i l i l fc i 'ii i 111 il l i llPliNl liii ii ' i i| i i n i ii \ mw 




ittrtm 



•> c 



ME 








ADDRESS 
2 
3 
6 
8 
9 



10 
10 
13 
14 
15 
17 
20 
21 
26 
28 
29 
30 



ROUTINES 



33 
38 
38 



lid You 



Information and Chairmen TreaSury Note$ 

input/Output — by Abed Kahale 

? — by Les Cottrefl kHc 

o ^mr 

From The Chairman's Disk — by Donald Lambert 

FILES 

IRA Pay-Out — from Don Lambert 

LarKen Disk System — by Gilliam Parrish 

HJI Anounces New Free Ware — by Tim Swenson 

Aurora — The QL Graphic Card 

QL Hacker's Journal — by Tim Swenson 

Surfing The NET With Trie 2068 — by David Lassov 

Parallel .I/O Modification — by Al Feng 

QLUTter BAS — by Al Feng 

Daisy Be Good X — by David Lassov 

ZX-81 Video Display System - 2 — by Wilt Rigter 

TS-2068 Modem Compatible Serial I/F - by Les cottrell 

SeekQL 2.09 Part 2 — by Al Feng 

SUBROUTINES 

Unclassified Ads 
RMG 

FWD Computing 




Established I Q© 



ZXir QLive Alive! © 

The Ti m ex/5 !nc lair NorthAmerican User Groups Newslette 





rmation 



We wish to support the foUowkvg 
platforms : ZX-80/81, TS-1000, 
Spectrum, TS-2068, Z88 and QL. If 
you have any questions about any of 
these fine Sinclairs, contact the: 

Chairman 

Chief Motivator 
Donald S. Lambert (ISTUG) 

Vice-chairmen 

Tape & JLO PD Library 
D. G. Smith 
415 Stone St. 
Johnstown, PA 15906 
814 535-6998 

Z88 Library 
Dave Bennett (HATSUG) 
329 Walton St. Rear 
Lemoyne, PA 17045 
717 774-7531 

ZX-81 PD Tape Library 
Ed Snow 
2136 Churchill Downs Cir. 
Orlando, FL 32825 
407 380-5124 

M3MG Enterprises 

Rod Gowen (CCATS) 
14784 S. Quail Grove Cir. 
Oregon City, OR 97045 
503 655-7484 FAX 503 655-41 1 6 

TS-2068 
Rod Humphreys (VSUG) 

10984 Coffins Pi. 
Delta, BC V4C 7E6 Canada 
604 583-2819 

QL PD Lxbraxy 
John Donaldson (CATUG) 
835 Foxwood Cir. 
Geneva, IL 60134-1631 
708 232-6147 

AERCO & Z80 Emulator 
Keith Watson 
41634 Amberly Dr. 
Mt. Clemens, MI 48038 

BBS — ==GATOR==— 
Bob Swoger (CATUG) 
613 Parkside Cir. 
Streamwood, IL 60107-1647 
630 837-7957 Woifc 847 576-8068 

Any of the above can also be 
reached by e-mail through the 
MMCC BBS 847 632-5558 



ZXir QLive ALive! 

Is the newsletter of T/SNUG, the 
Timex/Sinclair North. American User 
Groups, providing news and 
software support to the T/S com- 
munity in a VOLUME of four 
newsletters per year; begmning with 
t he Spring (March) issue. 



T/SNUG' s main goal is to 
preserve and encourage the 
use. of Sinclair computers 

by providing an open 
forum for the exchange of 
Imowledge, building and 
maintaining of software 
libraries. Providing 
vendors, repair service and 
members with free ad 
space. 



It is the user groups and individual 
subscribers, rather than the vendors, 
that provide the pecuniary support 
for this newsletter. Vendors and 
developers receive this newsletter 
free of charge, though contribution 
from vendors and user groups is 
gratefully accepted. Please support 
our vendors and service providers 
whenever possible. 

If you have a problem or you 
have solved a problem, please share 
it with the rest of us. No problem 
will be considered unimportant. 



Editor/Treasurer 



ou can keep T/SNUG alive by 
an annual contribution of $12 
for one VOLUME made payable 
to Abed Kahale. Send check to:- 

ABED KAHALE 

3343 S FLAT ROCK CT 
SIERRA VISTA AZ 85635-6874 

520 378-3424 
Back copies are available for 
$0.75 each postpaid, 

<As of March 3, 1997, we have 
a balance of $1234.63 




end in your articles by tape or disk 
1 and your inputs to: — 
DONALD LAMBERT 
1301 KIBLINGER PL 
AUBURN IN 46706-3010 
Phone 219 925-1372 
By hardcopy or modem (300-14.4) to: 
Abed Kahale 
E-mail: j^^^^jf ^^SEEP 36 ^^^^^ 

GATOR's 

TWISTED PAIR 

To better inform the Sinclair Community, 
four 24-hour a day BBSs are now provided to 
serve you. You are encouraged to exchange mail 
and use the files sections of these boards. 
Bulletins and ads are available to all. 

Q-BoxBBS 810 2S4-9&78 

Utica, Michigan 
SCC Sever Jose Moreno 
http://members.tiipod.com/-helpme/ 
SOL BBS 520 M2~mM 

Tucson, Arizona 
MMCC BBS 847 632 - 5558 

Arlington Heights, Illinois 
If you know the Internet E-Mail address of 
a Sinclair user, but do not have access to Internet, 
simply address your E-Mail to GATOR Sinclair 
on the 24-hour MMCC BBS and include the 
name and E-Mail address of the user you wish to 
reach. Then check the MMCC BBS from time to 
time if you expect a reply. 

We encourage you to excahange mail and 
contribute to the UPLOAD section. Call and 
register using your first, last name and phone 
number along with a password you won't forget. 
Write It Down! Do not try to do anything else at 
this time. 

When you call-in the next time, you will 
have Level 5 security and be able to enjoy full 
user privileges. The BBS has smaller sections 
called conferences. Select "J " for "Join a Confer- 
ence". Select "TIMEX" to get into the Sinclair 
Section. The mail you then read will only be 
from other T/S users. Use extension .ART for 
articles, .ADS for ads and .NWS for news when 
UPLOADing. 

For help, contact the SYSOP, Bob Swoger, 
by leaving a message, mail, E-Mail or phone. 
Bob_ Swoger-aENG108@email.mot.com 



ZXir QLive ALive? 



Spring 1997 



To: Abed Kahaie < 1 03457.244G@compuserve.com> 

You know, SOL BBS is really unique Didn't plan it 

that way, but that's the way it's worked out! For it runs 
ON a 2068, 

This means two things: First, it is arguably The Only 
BBS In The World, operated completely by a 2068, with 
the assistance of LKDOS and four disc drives plus 
RAMDISK. Also, Dallas SmartWatch, Brother 1. 109 large 
printer, TS-2040 small printer, Larry Kenny's own ZX80 
serial port, and Larry's modem SX212 by Texas 
Instruments. 

Well, this is surely not an unaided 2068! But, with the 
assistance of that short list of innocuous computer 
peripherals, 1 can take any of these little 2068 boards in my 
office here, and access the world of the Internet! 

Guess that's what they mean by saying, "It's An 
Open System." 

David Lassov Tucson, A2 

From: Jose Moreno <jose m@internetmci.com> 
Subject; SCC BBS 

To: Abed Kahaie <103457.2440@compuserve. com>, 
Bill Cable <bcable@triton.coat.com>, CATS News-Letter 
<mfD002@epfl2.epilbalto.org>, Chic Computing Club 
< 1 00023.477@compuserve.com>, FWD Computing 
<fwdavis@hotmail.com>, JonKaczor 
< 75363. 1 1 27@.compuserve.com>, Peter Liebert 
<p.Hebert@t-online.de>, Tim Swenson <swensont@ 
projtech.com> 

Greetings everyone! I ! ! 1 

This is a mass-mailing that I have created from 
a!! the Internet users that subscribe to ZQA!. ! am 

writing to inform you of the following I have read 

the latest ZQA!, and in there it states that SCC BBS 
in down for good. This is true. .. It went down due to 
lack of user support, I barely served any calls during 
the full one year of it being up. That's the bad news, 
the good news is that SCC may now be found on the 
Internet at the following address 
http://members.tripod.com/-helpme/. 

Go there and check it out... I have been working 
very hard to make it a very good website... Tell all 

your Sinclair friends on the Internet Spread the 

word Thank you 

Jose Moreno SCC Server 

First, the ZXir QLive Alive! newsletter looks as 
professional as any user group newsletter I've seen. You 
should be commended- but you probably haven' t been. 
If my past experience as a local user group newsletter 
editor is any indication, "silence" is about the best 
compliment you get as an editor. A mob carrying torches 
and heading toward your house would probably be an 
indication that things are not going well. 

ZXir QLive Alive! ~3 



Anyway, the newsletter says "Re-Up Time" has 
arrived again (where do the years go??), and considering 
the value of T/SNUG in general and the newsletter in 
particular, I am more than glad to make my yearly 
monetary contribution. 

As to non-monetary contributions, I saw the "Clue" 
article printed in the last issue, so I assume the LarKen 
article is coming up. i was hoping I'd have a bit more 
information on the Byte-Back parallel printer problem by 
publication time, but I've no definitive answer yet. I may 
have a further review coming up for submission; I'll send it 
e-mail if I get one put together. 

Keep up the good work! 
Gil Parrish Beggs, OK 

Thank you Gil. ( am sure that ZQA! members do 
appreciate the work and effort. The only thing that is 
missing is someone close by besides myself to 



I recently re-joined the Long Island Sinclair User's 
Group (LIST) and heard about the newsletter produced 
quarterly by ZXir Clive Alive! I wrote to Donald Lambert 
for information, and he suggested that I send you my 
contribution for a year's subscription to the newsletter and 
the buy-sell list which apparently accompanies the 
newsletter. My check is enclosed, 

I understand that the subscription year starts with the 
Spring issues due out March; which means that I have 
missed the Winter issues due any day now if not already 
published. Please advise if I can get a copy of the Winter 
issue by sending an additional check in an amount you 
may suggest. 

I work mainly with the Timex Sinclair Model 2068 
with a Spectrum adapter in the cartridge slot. 

Seymour H. Miller Forest Hills, NY 

WthnntB to nut (&mnmimttx$ 

A | copy has been mailed < to you 

Dear Abed: 

Here is the article on 2068's and the Internet. It is too 
long for MSCRIPT, so it's coming to you in two parts: 
intrnet.Ct and hints.Ct. Please, MERGE the two and print 
Internet first, followed by the hints. 

OK, a lot of characters are missing from my screen, 
so I'll SEND them again, this time in HALF DUPLEX. 
And, be sure to tell me if it comes out better, as I won't be 
able to see a thing! ! 

David Lassov 

Half Duplex did not work. 

Want to pass on this problem with LarKen MaxCom. 
IT IS INTERMITTENT: the worst kind! ! 

Suppose we want to enter a long message into a BBS 
or as Email into the Internet. Then, we go off-hne and 

Spring 1997 



prepare the letter as a text file. Entering the BBS or the 
Internet, we proceed to upload the ASCII file, containing 
the message, right? 

Well, everything goes fine, until the host computer 
system makes its first disc access. Then, our 2068 system 
pauses, waiting for a signal from the host to resume. 

The problem is, that that signal rarely comes, or, more 
likely, MaxCom fails to respond. 
This is a nasty problem, since it appears to be a defect in 
the machine CODE, both MOCOD.C1 and MAXBBS.C1 
.... The system point enters the CODE, in order to effect 
ASCII transfer, and never emerges, to finish ASCII 
transfer!! 

HAPPY NEW YEAR 

David Lassov Tucson, AZ 



CLOSE TO HOME 



© 1996 Jolm McPherson/OisL by Uniwsal Press Syndicate 




from Frartcine Sldar 



I just mailed you a load of articles, all for (maybe) 
next issue ofZQA!. 

There are five menus, which BOTH daisy la.art and 
Daisya.ART discuss. In addition, I had to COPY the Main 
Menu for Daisy2a.ART on the 2040. 
Hope that's OK. 

Also wrote you a letter about a long 2040 listing. 
Hope it copies well, as the topic is fascinating, BOTH a 
listing of a Post Mortem Dumper and a study 2068 BASIC 
and the way it stores and uses the values of PI. It is a study 
in the cool ways of optimizing 2068 BASIC code ! 
KEEP ON TIMEX' n =»»»>»Dave 

The following groups still meet, those who 
still publish newsletters are indicated by gp: 

{See the Ads section for addresses} 
Don Lambert (ISTUG) 
219 925 1372 



Phil KwitkowsM (CATUG) § 
603-584-6710 
Rod Humphreys (VSUG) 

10984 Collins Pi. 
Delta BC V4C 7E6 Canada 

Harvey Rait (LIST) fj 
George Chambers (TTSUC) 

14RichomeCt. 
Scarborough, ON Canada 
Barry Washington (CATS) § 
301-589-7407 
Gary Ganger (DMA) 
(NESQLUG) § 
617233-3671 
JonKaczor(GCTSUG)§ 
E-mail: 73177,333@compuserve.com 



Top 1 0 Ways Microsoft Would 
Change The Auto Business 

10. New seats would require everyone to have the same 
butt size. 

9. We would all have to switch to Microsoft gas. 
8. The US government would be forced to rebuild all of 
the roads for Microsoft cars; they will be able to 
drive on the old roads, but they will run very slowly. 
7. The oil, alternator, gas and engine warning lights would 

be replaced by a single 'General Car Fault' light. 
6. Sun MotorSystems would make a car that was solar- 
powered, twice as reliable and five times as fast but would 
run on only 5% of the roads. Intel Motors would make an 
engine with twice the horsepower but will only run 10% 
faster. 

5. You would be constantly pressured to upgrade your 
car. 

4. You could only have one person in the car at a time, 
unless you bought a Car95, CarNT or Car 97 — but then 
you would have to buy ten more seats and a new engine. 
3. Occasionally, your car would die for NO apparent 
reason and you would have to restart it. Strangely, you 
would just accept this as normal. 
2. Every time the lines of the road were repainted, you 

would have to buy a new car. 
1. People would get excited about the new features of the 
latest Microsoft cars, forgetting that these same features 
had been available from other car makers for years! 

Attribution: According to one source <Thomas Head 
(thomash@blue.misnet.com)> this list was originally 
published in either the "AutoWeek" or "Car and Driver" 
magazine. 

To Jay (Shepard) 

A guy walks into a bar and sits down. He starts 
dialing numbers on his hand like a telephone. The 
bartender walks over and tells him that it' s a very tough 
neighborhood and he doesn't need any trouble here. The 
guy says, "You don't understand. I'm very hi-tech. I had 
a phone installed in my hand because I was tired of 
carrying my cellphone." The bartender says, "Oh, yeah? 
Prove it." 

The guy dials up a number and gives his hand to the 



ZXir QLive Alive! 



Spring 1997 



bartender who talks into the hand and carries on a 
conversation and then hangs up. "That's incredible," says 
the bartender. "I'd have never believed it!" "Yeah" says 
the guy, "I can keep in touch with my broker, my wife, you 
name itl By the way, where is the men's room?" 

The bartender points to the door in the corner. The 
guy goes in and doesn't come out for the longest time. 
Fearing the worst, given the tough neighborhood, the 
bartender goes in and finds the guy with his pants off, 
spread-eagle up against the wall, and a roll oftoilet paper 
up his butt. 

"Oh my God! Did they rob you? How much did 
they get?" The guy turns and says, "No, no, I 'm just 
waiting for a fax!" ( I'll bet he's got a hand-held scanner 

too. % A ) 

As for the printer interface, you can see drivers I've 
written before in UPDATE! and I think in NTN. One was 
for a DMP 130, the other for an EPSON. I use 
TIMACH1ME to turn it into machine code. 

What baffles me is that drivers for your printers are all 
available for the IBM somewhere, 1 believe on the DOS 
disk you got with your machine. Lets get these questions 
answered for me: platform: IBM - Right! 

What are you trying to print and can't, a picture? Just 
text? From what application? Just exactly what is the 
model printer you are having trouble with? As for ribbons, 
I know a place - and they are cheap! -—GATOR—- 

To: Bob Swoger-CENG108@emaiLmot.com 

From: JShepard-Boxholm@worldnet.att.net^INTERNET 
onTue, Jan 14, 1997 8:09 
Subject: lit' prtr drvr 

No, I've never written my own printer driver per se. 
'The Z88 has a printer editor where I believe you are altering 
it's driver for special needs if you know the codes, such as 
underline ON = 27,45,1 & italics - 27,52, etc. I never felt 
that was all that is in. a driver. I thought it involved being 
able to write machine code. I would like to get the Gemini 
to work with my PC (IBM). 

J have no idea if the control codes are part of writing a 
driver, but mat won't keep me from babbling a moment on 
the subject. My manual for the Gemini does not list the 
control codes. However, in '83 someone in either SMUG 
or Sine-Link wrote quite a bit about the Smith-Corona 
Fastex 80, which lead me to purchase one. (The ribbons 
are now hard to find). The manual for it has four pages 
control codes with reference to their name, dec & hex 
equivalents, e.g., esc w = dec. 27,87 = lb 57 which is 
turning off or on Enlarged mode. 

This is all that has been on my mind for a while that I 
thought "Chicago Bob" could help me, and I'll not bother 
you for a while so our phone lines can cool off. Thank you 

so — ===== =+++==== — j 

Dear Abed, 

It is time for me to renew I have received a lot of 

help from a lot of people in getting my TS-1 000 going 
again. I have also received help on finding upgrades for it. 
I have been very busy the last couple of months with a new 
job, college and moving. I will answer everyone that has 



ZXir QLrve Alive! 5 



contacted me, it might take me a few more weeks before I 
am completely settled in. 

In looking at the back pages, I see a few articles in 
volumes 1 and 2 that I would like to read. Do you still 
have a few copies of those? I am interested in all four 
issues of vol. 1 & 2. 

Once again Thanks to everyone, I will answer you all. 
Ken Harbit Fresno C A 
Burning the candle at both ends? How well I 
know - my college days. Any of the back issues are 
available for $. 75 each. Wj s !}J® u J u _ c A 

mueve iv or hov 

State Residency Application 

(1) Name: 

O Billy-Bob" 

() Billy-Joe 

() Billy-Ray 

OBiUy-Sue 

Q Billy-Mae 

O Billy-Jack 

(Check appropriate box) 

(2) Age: 

(3) Sex: M F_ N/A 

(4) Shoe Size: Left ___ Right 

(5) Occupation: 
( ) Farmer 
( ) Mechanic 
( ) Hair Dresser 
( ) Un-employed 

(6) Spouse's Name: 

Relationship with spouse: 

() Sister 

( ) Brother 

( ) Aunt 

() Uncle 

( ) Cousin 

( ) Mother 

() Father 

QSon 

() Daughter 

OPet 

(7) Number of children living in household: 

Number that are yours: 

(8) Mother's Name: 

(9) Father's Name: __(If not sure, leave blank) 

(10) Education: 1 2 3 4 (Circle highest grade completed) 

(1 1) Do you ( ) own or ( ) rent your mobile home? 

(12) Vehicle Information: 

„ Total number of vehicles you own 

Number of vehicles that still crank' 

Number of vehicles in front yard 

NumbeT of vehicles in back yard 

Number of vehicles on cement blocks 

(13) Firearms you own and where you keep them: 
truck 

bedroom 

bathroom 

kitchen 

shed 

Spring 1997 



(14) Model and year of your pickup: 194 

(15) Do you have a gun rack? 

( ) Yes () No - If no please explain: 

(16) Newspapers/magazines you subscribe to: 

(' ) The National Enquirer 
( ) The Globe 
( ) Soap Opera Digest 
( ) Rifle and Shotgun 

(17) Spottings: 

Number of times you've seen a UFO 

Number of times you've seen Elvis 

Number of times you' ve seen Elvis in a UFO 

(18) How often do you bathe: 
() Weekly 

() Monthly 

() Not Applicable 

(19) Color of teeth: 

() Yellow 

( ) Brownish- Yellow 
( ) Brown 
( ) Black 
( ) None 

According to one source (thomash@blue.misnet.com) 
Hello Abed, 

As I mentioned previously, I was hoping to update 
my LarKen article for the newsletter if I learned anytliing 
about the Byte-Back printer interface problem prior to 
publication. I'm not sure where you are publication-wise, 
but I've confirmed that a port conflict is involved, and 
hence the problem is not solvable with some minor 
tinkering to the Byte-Back printer driver, as I had hoped. 
I've ended up buying an AERCO printer interface for use 
with my LarKen. 

The revised article is attached, if you can make use of it 
Incidentally, do you have 

SUPERDRIVER for the AES8CO, or 

the TS 1 000 printer driver for it? 

Gil Parrish 
Route 1 Box 705 
Beggs, OK 
73430. 1 546 ©Compuserve, com 
Sorry Gil, but I don't have either of them may be 

oneofour ^!J^^_p^J]J^ffd b hand If! 

Dear QL user, 

By now you will have heard that S.J.P.D. SOFTWare 
will be closing on 30th January 1 997. This was due to me 
suffering another prolapsed vertebral disc commonly 
known as a slipped disc. This means that: I will have to 
undergo surgery to have the disc removed. This is the 
second disc to suffer as I had the same problem 15 years 
ago and had surgery then. Sitting at a computer has 
become very painful. 

In a depressive mood, I decided to close down 
S.J.P.D. SOFTWare. I contacted my building society and 
gave notice of closure of the S.J.P.D. SOFTWare account I 
also rang all my suppliers and closed down the accounts 
with them. I also contacted the editors of QUANTA & QL 



TODAY to give them notice of closure of S.J.P.D. 
SOFTWare^ 

I received a lot of letters/ faxes/email of support and 
expressions of sadness of the closure of S.J.P.D. 
SOFTWare. These and a more positive mood as to ray 
medical condition has prompted me to reconsider the 
closure. I am now very please to announce that I will 
continue to supply QL Public Domain, Shareware & 
freeware. However as stated, I have now closed down all 
S.J.P.D. SOFTWare accounts, so I will offer these services 
under my own name. This means that all Cheques must be 
made payable to "S. JOHNSON" Any orders received after 
30th January 1997 with cheques payable to S.J.P.D. 
SOFTWare will be RETURNED. As I have new banking 
arrangements I will NOT be able to accept Eurocheques, 
sorry for any inconvenience this may cause but 
Eurocheques have always caused a problem. 

All the disks continue with the same disk numbers. I 
will slowly remove all references to S.J.P.D. SOFTWare 
from the disks. 

_S. Johnson. 

Did Yow Know? 
i recently needed to send several 5.25 inch floppy 
disks in the mail. I had some single disk mailers and some 
disk boxes available, but neither of these quite rilled the 
bill. The solution was to take a manila folder and trim it so 
it would fit in a standard 8.5 by 1 1 envelope that I had 
available. Then it was a simple matter to tape the disk 
sleeves to it. The tape used should be some kind that can 
be removed without tearing the sleeve. You can put disks 
on both side of the inside of the folder if needed. Thirteen 
disks were easily fitted into the folder this way. 




The disks were staggered so that they wouldn't catch 
on one another, and an accompanying letter was placed 



inside the folder before mailing. 

Les Cottrell 
108 River Hts. Dr. 
Cocoa. FL 32922-6630 

,**^™^-*-™—*i,*--.-.-i.*~*«<**»m*m**,~-n —i , — — — — ■ i i mm i — — w i wtt* ■ 

Hi Abed 

As you can tell I'm at a different email address. 
George went and upgraded to a new NEC computer. I can 
now be emailed at Juno. Please send all future email 
messages to me at the new address, although Fm trying to 



ZXir QLive Alive! 



6 



Spring 1997 



get my TS2050 up and going. Do you still have and operate 
a TImex- Sinclair? 

Would you please resend your last message to me at 
the Juno address., the message with Lassov's article? I'd 
appreciate it if you could. The last time you sent this 
message we were still using George's old computer and the 
printer was malfunctioning. Half of the message you sent 
was gibberish when it printed on the old printer. " 

Bob Swoger is assisting me in my attempt to utilize 
my TS2050 modem. The last time we talked my system 
was not downloading properly, i don't know what's 
wrong with my new modem - but Bob is trying to figure it 
out. 

I'll be giving him a call this weekend and hopefully 
he'll have the problem figured out. I'm enjoying 
computers more and more. 

Well, that's all for now. Take care and be in touch. 
Your friend. 

Email: abqplondlie@juno.com 
Jeff DeCourtney Albuquerque, NM 
Sorry for the delay, but I was out of town for a 
while visiting my first grandson in Atlanta, GA. A 
copy is in the snail mail. Yes I still use my TS2068 
with LKDOS, two disk drives and RAMDISK. 



^ :x:-:;.:.i:-' ; 




Sender: Bob_Swoger-CENGl 08@email.mot. com 

I just read LIST for January. There is for sure to be a 

QL Show USA sponsored by NESQLUG on May 3, 1997 

at Bedford, PA, It must be near Washington DC as Dulles 

Airport is the one to fly into. 

Frank Davis will be there. Contact Bill Cable 

bcable@triton.coat.com and Ed Kingsley-6lk4@a0ieom 

for details. 

It would be a good idea to get this news into the next 
ZQA! would it not or would it be too late? It says Tim 
Swenson's email address is 

swensotc@ss2.sews.wpfb.af.mil - is that true or is there a 
new address since he is out of the military? When you get 
the LIST you will be able to pick up mode email addresses 
for the LIST group. Seems like we have been out of touch 
for a while, is all well with, you and Jan? 

Sure has been cold here. Bet you are thankful you are 
there and not here. We will, have no January meeting 
because of busyness and cold weather. --=GATOR=~ 



77/77 Swenson E-mail address was in the last ZQA! : 
s wen son t@projtech . com 
Your E-mail Address has changed, apparently 

yoyAi^ix&c&y® JUL &/!??.^^; ^-^_ 

To: 1 Q3457.2440@cornpuserve.com 
Subject: Di-Ren mfolink News 
X-Mailer: Di-Ren news_bas 
X-User: Di-Ren Email 

Email Address Change 
Please immediately change the di-ren@di-ren.co.uk 
Email address to support@di-ren.demon.co.uk 
This change is due to continues handling problems with 
the di-ren.co.uk Email address handler. 

| Robin Barker Di-Ren 

Dear Abed, 

. . . Even though the Toronto Timex- Sinclair Users 
Club shut down a couple ofyears ago, there were eight or 
so members who did not wish, to lose friendships that had 
developed over the years, and who, as a consequence, 
continue to meet once a month, at my home. Our 
discussions encompass the whole computing field, not 
simply the Sinclair product. Most of us have PC's, but 
also have a Sinclair/T'imex of one sort or another. 

Anyway, what J really wish to do is compliment you 
and Don Lambert, and all others who continue to put such 
effort into the Sinclair scene, for the benefit of us all. 
Sincerely, and Best Wishes for the future. 
George Chambers Scarborough, Qnt 

Canada 

Thank you George, it is conforting to know that 
ail is not lost And best wishes fwihegroug 

Abed, 

Nice talking with you tonight. Please enroll me in 
T/SNUG. 

I have stalled going thru the earlier issues of 
UPDATE! as you suggested hoping to find a solution to 
my printer/2068 problem. 

With the AERCO CP-68 1 acquired, recently from 
RMG, my 9-pin printer Star NX1000 works fine, but when 
I try to use my new Epson 8260 24-pin printer, I get 
gibberish. Rod was not able to help. 




an y&m help? 



Thanks for your patient listening. 
Sincerely, 

Earl L Kielgass 
2015 E. Duke Dr. 
Tempe,AZ 85283-241 3 
602 838-4308 

Ufelrmn* t& Bur Cimrntratfibg 

The article I had in mind is in the October '93 
UPDATE!, page 44, by the late Larry Crawford; 
"24-pin Bit Image Graphics", 

This is not exactly what you are after, sorry to 
say, but some member must have had the same 
problem. Anyone phase? 



ZXk QLive Alive! 



7 



Spring 1997 




Thanks for helping spread the word. Although this 
is basically a QL event anyone is welcome and Frank 
Davis will be there offering a wide range of Sinclair 
products. -- Bill 

Here are the initial details for the '97 
North American QL Show in Bedford, PA. 
Although Bedford is on an interstate exit 
this is basically in the country. There is no 
public transportation but the restaurant is 
within walking distance of the motel. Date of 
the Show : Saturday May 3, 1 997 

Location of the Show 

Carriage House Restaurant 
Exit 1 1 off the I-70 & I-76 Interstate 
Bedford, Pennsylvania USA 
Phone: (314) 623-1174 
Time of the show : 9 AM - 4 PM 
Bedford is halfway between Harrisburg and 
Pittsburgh on Interstate i-70 & I-76 

format of the show 

The show will include talks and 
demonstrations by well known QL 
personalities and sales by a number to 
vendors. The show will take place in the 
main dining room of the restaurant and 
lunch is included in admission to the show. 
After the show a banquet will be held at the 
same restaurant at 6 PM Saturday evening. 
All the newest QL hardware and software 
will be there to see and purchase. 

Admission Fees 

$12 per person if you notify Bill Cable 
in advance $15 per person at the door 

This includes admission to the show 
and LUNCH and general refreshments, 
throughout the day. 

Recommended Motel 

Super 8 Motel 
Business Rt. 220 N 
Bedford, PA 15522 
Phone:(814)623-5880 
FAX: (814) 623-5880 



1 m nm fp- ^^ft^ 

Also at SETTofthe 1-70 & 1-76 interstate at 

Bedford. 

Rates 

Double occupancy with one double bed 
$40.91 Double occupancy with 2 separate 
beds $44.72 
When you make your reservation 
mention Bill Cable and the QL show to get 
this special rate. The rate is per day. There 
are 57 units, Exercise equipment, HBO, 
Free local calls, waterbeds, children under 
12 free. 

Recommended Airports 

Dulles International Airport 
Washington, DC This is about 2 % hours 
by car from Bedford 
Pittsburgh Airport 
About 2 hours by car to Bedford 

Harrisburg Airport 
About 2 hours by car to Bedford 
A more detailed agenda will be 
released on February 10th. There will be a 
dinner gathering 6 PM Friday night also at 
the Carriage House Restaurant. Those 
flying in to airports and needing rides to the 
show please contact Bill Cable and every 
attempt will be made to connect you with a 
local QL person going to the show who can 
meet you and give you a ride. Likewise, QL 
people driving to the show who would like 
to give a ride to a QL enthusiast from far 
away please contact Bill Cable. 

This is the 5th annual North American 
QL show. It is being sponsored by 
NESQLUG (The New England Sinclair 
Users Group) and all details are being 
handled by : 

Bill Cable 

NESQLUG Director 
RR3 Box 92 
Cornish, NH 03745 USA 
Phone:(603)675-2218 
E-mail : bcable@triton .coat.com 



ZXir QLive Alive! 



8 



Spring 1997 



Donald Lambert 



After all the lousy weather maybe we are headed for 
spring, but! it did snow this morning and it has almost all 
melted. I have my taxes figured and mailed so things do 
look better now. With that moaning and groaning about 
the weather and taxes out of the way 

I have progressed in my typing in the tutorials 
from the newsletters and currently I am on my 4th disk of 
material. More on that later. 

I had a call from Earl Kielgass, 2015 E. DUKE 
DRIVE; TEMPE AZ 85283; Tel (602) 838-4308; in which 
lie sought information on how to use his new 24-pin 
epson printer on the T/S 2068 using the aerco printer 
interface. That was Saturday February 18th He uses the 
LarKen disk interface so I searched for 24-pin printer 
software and 1 found two disks but they were for the 
Oliger. I contemplated the problem of transferring the files 
from Oliger to LarKen but before I started, 1 once more 
went through my master file of LarKen software. 1 found 
two disks but the labels weren't exactly what I thought I 
was looking for. A comparison of the directories of the 
disks revealed that the LarKen was almost an exact 
duplicate of the Oliger material. So I used D.U.S. and 
coPYis.Bi to copy the disks for Earl. Earl called Saturday 
February 22nd to report that the disks had arrived and mat 
the other disks I had sent looked very interesting. He had 
not 'hied to do anything with the printer information. If 
any one has anything on a 24-pin epson printer and the 
aerco printer interface let either me or Earl know. While 
Earl only has the LarKen disk interface, I have the Oliger, 
the Lai-Ken and the aerco disk interface. Earl only has 40 
track (dsdd) drives. 

On Sunday I had a call from Fred Stern in which he 
had Ms one and only copy of masterscribe (a T/S 1000 
work processor) copied over, apparently his daughter had 
grabbed what she thought was a blank cassette to copy a 
CD. I steered him to where I thought there was a copy- 
Discussion led to my mentioning the tutorial project but 
he only has the aerco disk drives both for the ZX81 and 
the 2068. He was interested but tire thoughts of all that 
paper if printed out and the cost of printing and mailing. 
After the phone conversation ended I remembered the 
article that Les Cottrell had wrote about the Radio Shack 
Mini audio amplifier 277-1008 for $11.99. Put a 9 volt 
battery in it and plug it in between the two 2068s. 

I have two 2068 computers located 51 inches 
apart on separate computer desks. The right hand 
one is set up with the AERCO disk system only. The 
left had 2068 has the LarKen/Oliger disk systems 
setup. Normally I use the Oliger disk system and the 
others when and if needed or the fancv strikes me. 
The left hand computer with the Oliger interface has 
an audio cord from the MIKE jack to the input of the 
audio amplifier. The audio amplifier ext. Speaker 
jack goes to the EAR jack of the AERCO computer. I 



do have one extra item in the line up and that is a 
meter to monitor the output of the amplifier to keep 
from blasting the ear of the AERCO computer. The 
files of the tutorials are in mscript. And I have 
MSCRIFT V5.5 for each of the disk systems. To 
transfer the files from Oliger to aerco I power up 
the AERCO system and got mscript loaded and a disk 
formatted. In the menu mode I press the U key to trigger 
the change from disk to cass. I then press the L key to 
get the load a cassette software and I press enter. That 
gives the cassette LOADing pattern on the monitor I then 
turn on the audio amplifier full on (The nine volt battery I 
am using is just marginal for use according to a Radio 
Shack battery tester). I then load mscript and the file I 
want to transport to the aerco disk and change the file 
name if necessary to something that the aerco will accept 
and press the U key to trigger the change from Disk to 
cass. Then I press the S key to save and when the 
query to save filename? appears, I press the Y key for Yes 
and get trie start tape and press enter . When I press enter 
the Oliger monitor displays the SAVEing pattern and a 
brief moment later the other monitor displays the load 
pattern. 

When tire load is completed, I go to the aerco 
computer and press the U key to trigger from cass to 
disk, then the S key to save and on the save filename I 
press Y and the disk drive goes to work. When the s ave 
is complete, I press C for cat and press the enter key 
twice to get the cat done. A look to see if the file saved 
correctly as far as number of bytes, then press the U key to 
change from disk to cass and press L and enter to get 
ready for the next file to be transferred, i found that a 
printed out directory on tire Oliger was a necessity to be 
able to not miss a file and have the correct file name It 
does require concentration to avoid problems. The 
copying the files from one dos to the other is not fast but 
a lot faster than SAVEing to cassette and reLOADing tire 
files. In the future I will transfer the files as I type them in. 

I am currently typing in Sinc-Link which was the 
newsletter of the ITS UC of Toronto. Since I have almost 
all the issues. I started with their first and am now where 
they are starting to discuss the various disk drive systems. 
Some of the early articles are very interesting. I learned 
more about machine code presented in such a way as to 
make sense. Of course the early articles were on the ZX81 
only. Since I have the newsletters filed by name 
alphabetically, this will put ZXir QLive Alive! last, but! I 
don't know if syntax is a newsletter or not. I sort of 
considered it a magazine because of its price. After the 
newsletters, will be all the magazine articles and there are a 
lot. Which will give up first? Me, the computer or the lack 
of any other T/Sers out there? With that I close this issue's 
column! § $ a 




ZXir QLive Alive! 



9 



Spring 1997 




from THE RAMTOP by Max Schoenfield 



IRA's (Individual Retirement Accounts) are good 
those who can afford them. At present you can put up to 
$20,000 a year into such an account, and reduce your 
taxable income by the amount of your deposit. You can 
not withdraw any money until the year in which you 
become 59 l A without suffering a penalty. Many banks 
have displayed ads telling how much you will have at 
retirement age, assuming a given rate of interest. Banks 
offer various options for the systematic rate of withdrawal 
of funds, but no such infonnation has been advertised. 

This program provides for a uniform rate of 
withdrawal. You must state the beginning amount (how 
much you have accumulated); the assumed rate of interest 
(a guess on anyone's part); and the number of years of 
pay-out (must be equal or less than your life expectancy at 
retirement). 

The process is called iteration. The amount of annual 
pay-out is first estimated by the variable "c" and then the 
process is repeated until the balance left after the last pay- 
out: is within one dollar of zero. 

The first display shows the amount left after the last 
pay-out alongside the annual payment The second 
display shows the balance of funds for each year once the 
pay-out amount has been established. 
10 REM "IRA" 

15 REM - by Max Schoenfeld 
20 INPUT "How much money to start? $ 



'Expected interest rate? w ;b 
'How many years to pay out? 



30 INPUT 
4 0 INPUT ' 
" ;d 

50 PAUSE 50: PRINT "This table shows 
how much money remains in the account 
after ";d;" years, with the amount of 
annual withdrawal . " 

100 PRINT' 

11.0 LET c=a/10 

120 DIM a(d+l) 

125 FOR x=2 TO d+1 

130 LET a(l)=a 

140 LET a(x)=a(x-l)*(b+l)-c 

150 NEXT x 

160 PRINT a (d+1); TAB 12 ;c 
200 LET c=c+a{d+l)/ (d*d) 



205 IF a(sd 



H)<=1 



AND a(d+l)>=- 1 THEN 



GO TO 300 
210 GO TO 
305 PRINT' 

paying out 

year - " 



125 

"Balance by year, 
w ;c-(a(d+l))/(2*d) 



after 
" each 



307 
310 
320 
330 



bOR X-- 
PRINT 



--2 TO d+1 



<"~l); TAB 



203 



7.1549 
2037. 0282 



.0;a(x) 

NEXT x 

PRINT' "Total pay-out is $ 
";d* (c~(a(d+l) )/ (2*d) ) 

Below is an example of how the program works, Start 
with $20,000 in the account . Assume an interest rate of 
.08%. Plan for a 20 year pay-out. 

This table shows how much money remains in the 
account after 20 years, along with the amount of annual 
withdrawal. 

1695,2.143 2000 
-244.19408 2.042.3804 
35.175967 2836.2755 
-5, 067121 
0,72983313 

Balance by year after paying out 1037.0237 each year. 

1 19562.972 

2 19090.981 

3 18581.232 

4 18030.702. 

5 174 36.13 

6 167 93.992 

7 .16100.4 83 

8 15351.4 93 

9 14542.585 

10 1.3668.963 

11 12725.452 

12 11706.4 6 

13 10605.94 9 

14 941.7.3963 

15 8133. 75ge 

16 6747.4323 

17 5250.1987 

18 3633.1863 

19 1.886.813 

20 0.72983313 

Total pay-out is $ 40740.565 



The LarKen Disk System 



by Gil Parr is h. 



It is an inherent problem with any user support 
group that a newbie does not receive the full benefit of 
prior activity., Obviously, a user who first shows up in 
April does not get to see the hardware/software 
demonstration given in March. And because the prior 
activities are thereafter "old hat" to the people who did 
participate in them, old subjects may never be raised again. 



ZXir QLive Alive! 



10 



I was reminded of that recently when I set out to get 
disk drives for my 2068. I've never had anything except 
tape drives, so I've paid only the barest attention to disk- 
diive-related matters. But when I picked up an unused 
LarKen Disk Interface kit from a T/S enthusiast who never 
got around to trying it, I suddenly got VERY interested in 
the subject of the LarKen, only to discover that a basic 
discussion of what the system is, how you connect it up, 

Spring 1997 



and what it does, seemed to be missing from prior issues of 
this newsletter- no doubt "old hat" to most. What's a 
newbie to do? So, for the benefit of future newbies, this 
article is a "beginners-eye review" of Larry Kenny's 
LarKen Disk Interface system, with particular emphasis on 
set-up. 

□ 

esa My first reaction on receiving the kit was- this is 
it??? While some LarKen systems may come with disk 
drives added by the prior owner, the basic kit simply has 
two smallish circuit boards, a rather-cheesy manual and a 
disk. Nothing else. The manual mentions almost casually 
that you also need a disk drive, power supply for the drive 
and a cable to connect everything up, but does not go into 
any detail on how this is done. Is connection really so 
easy, or is the manual deficient on that point? 

£53 It turns out to be just about that easy. External disk 
drive units, having their own power supplies in the case, 
are available in the used market for a variety of early 
computers. Some of these drives (e.g., Commodore and 
Atari) are "intelligent" peripherals and would not be a good 
choice for a LarKen system because they have been 
heavily modified for their particular use. But others, like 
those made for the Tandy/Radio Shack Color Computer 
("CoCo"), are fairly generic disk drives that require a 
separate disk controller- which the Lai-Ken provides. If 
you find an external unit housing a drive that meets your 
needs, you can use it as-is without getting into issues of 
power cabling and drive configuration at all. 



ess However, if you need or want to replace the floppy 
drive that comes in an external case, that chore is not 
difficult. You have a wide choice of replacement drives 
available to you, since the LarKen will work not only with 
standard 5-1/4" DSDD drives with 40 tracks per side 
(which probably has the greatest compatibility with other 
LarKen users) but also with older 5-1/4" floppy 
mechanisms like 35-track per side drives, 80-track per side 
"quad-density" drives, and single sided instead of double 
sided drives, as well as 3-1/2" drives. Luckily, most drives 
have standard power connectors and cable interfaces so an 
old drive can be taken out of an external case and an 
appropriate one configured and installed fairly easily with, 
the same wiring. "Power splitters" are available from 
sources like Radio Shack if your external case has one full- 
height drive and you wish to replace it with two half-height: 
drives (which typically use less power each). Power 
converters are also available if you want to put a 3-1/2" 
drive in a space wired for 5-1/4". If you uncover no 
external drive case to suit your needs, another possible 
power source is a computer power supply (inside its 
shielded case) removed from a junked PC or similar. Such 
unit likely has the disk drive power cables already in place 
and set to go. But of course, in that event you'll have to 
come up with a separate box to house the floppy drives. 
Q 

ess Configuring a drive involves setting the drive to the 
number to which you wish it to respond. The LarKen 
refers to the drives it controls as "0" for the first one, "1" 
for the second, and so fort h, and most floppy drives use 



the same designations (although you may run into some 
that use letters Eke "A" and "B"). Typically, there are two 
rows of pins somewhere on the drive circuit board with 
designations like "DSQ" for drive 0 and "DS1" for drive 1, 
next to different pairs of pins. Look for a small slide-on 
connector tying a pair of pins together, and place that 
connector on the pair of pins next to the appropriate drive 
number. On older drives, you may find instead a 
configuration shunt, which will require you to cut the 
connections you do not need (e.g., for drive 0, cut the ones 
labeled 1, 2, & 3), or alternately, to reconnect up (with 
solder or wire) a previously-cut connection you do want. 
These older drives may also require a terminating resistor 
on the last (highest-numbered) drive; such resistor 
normally looks somewhat like a regular- IC chip with 14 or 
16 pins and has the resistor value written on it. So, if you 
take a pair of older drives out of another unit for this 
purpose, the one with the resistor will need to be the last 
drive, or the resistor will need to be pried out and relocated 
to the drive you want to be last. 



with 



Hie required interface cable, typically a ribbon cable 
34-pin Shugart-comparible female edge-card 
connectors on both ends, were common a few years ago 
and should not be hard to find. For instance, the CoCo 
cable, which is a flat cable without the "IBM Twist" in the 
middle (a segment of the wires twisted 180 degrees from 
how they would normally attach), will work. I did not test 
an "IBM Twist" cable. 

H in my situation, I removed a full-height 35 track 
drive from a CoCo external drive unit, and replaced it with 
two half-height 5-1/4" DSDD 40-track models, utilizing a 
power splitter. I picked up those drives for about $5 apiece 
in a used software/hardware store; sometimes whole 
original PC -type computers can be found in the $]0-$20 
range and stripped of drives and any other appropriate 
parts. The new drives didn't exactly fit the case like a hand 
in a glove (screw holes in wrong position and such), but 
they did go in, could be locked in place with a little 
electrical tape, and functioned fine. 



ZXir QLive Alive! 



11 



ess As stated, two separate boards are needed by the 
LarKen system. One slides into the expansion port 
connector in the back of the 2068; that one, which has a 
pass-through interface for other peripherals and a 34-pin 
Shugart compatible card edge, is the actual disk interface to 
which your disk cable attaches. The other board goes into 
the 2068 cartridge port on top; this is the brains for the 
system, and avoids you having to load the operating 
system every time you turn on the computer. Command- 
wise, the LKDOS operating system makes your life is a bit 
more complicated because, when you wish to access the 
cartridge/drives, you are required to give a RAND USR 
100: command (or a PRINT #4: command, if you have 
previously given a RAND USR 100: OPEN #4,"dd" 
command) preceding any disk instruction (e.g., RAND 
USR 100: LOAD "FILE.B1"). Giving such long 
commands can get old, but the right software can alleviate 
this (see LogiCall below). 

Spring 1997 



ess With LKDOS alone, the system can LOAD, SAVE, 
rename files, erase files, give you a disk CATalogue, send 
the catalog to printer, and perform other simple, tasks. 
Additional common disk-handling functions are done by 
separate programs. These extra utilities are what are on the 
LarKen System Disk, and include such things as 
fonnatting, copying whole disks if you have two drives, 
copying files from one drive to another, and copying files 
from one disk to another on a single drive (through "disk 
swapping", which gets old fast since each program on the 
disk requires at least one and sometime more than one 
swap from source disk to destination disk and back again). 
These programs pretty well complete the list of basic disk 
handling functions, though different and additional utilities 
are available in T/SNUG's LarKen Library if you want 
them. 

□ 

ess But as the old carnival barkers used to intone, "You 
say that's not enough? You say you want more?" Well, 
the LarKen delivers more in additional features not strictly 
necessary to its basic mission. For instance, the system 
has built-in printer drivers that allow the LarKen to work 
with the AERCO, TASMAN and A&J parallel printer 
interfaces without loading extra code. It does NOT have 
built-in code to work with the Byte-Back parallel printer, 
and therein hangs a tale. 1 have (you guessed it) a Byte- 
Back parallel interface. The LarKen instructions state that 
you can load a separate parallel driver, tell the system 
where you placed it (with the appropriate POKE), and the 
system can use it. The cartridge even has some free RAM 
where you can stash the code and not use up any regular 
memory. Perhaps for some printer drivers this would be 
more than enough, but for reasons beyond what "read the 
manual" would solve, I am unable to successfully load and 
access the Byte-Back printer driver. I assumed there were 
lots of folks out there with LarKen/Byte Back systems who 
could advise me, but the Lai-Ken experts I consulted had 
never run across this problem. I even dropped a note to 
David Leech, who is Mr. Byte-Back himself and a very 
helpful gentleman, but have not received a reply. If anyone 
KNOWS the solution (not "such-and-such OUGHT to 
work'% I'd still, be interested. But in the meantime, the 
LarKen works well enough with my 2040 to print out disk 
catalogs and do other similar light-duty tasks. 
□ 

ess The LarKen system supports the replacement of the 
2068 ROM with a Spectrum ROM for running Spectrum 
software, or (with some minor hardware hacking) placing a 
Spectrum ROM on the interface in addition to the existing 
2068 ROM (and here, Bob Swoger can supply you with fee 
needed socket, and ROM for $12, see his kind offer 
elsewhere in this newsletter). The system has a Kempston- 
style joystick interface, for use on those 2068 or (usually) 
Spectrum programs requiring Kempston joysticks, 
' Perhaps most importantly, the interface has a "snapshot" 
feature that allows you to freeze a program in memory and 
save the image to disk. The primary use for this is moving 
to disk all those old cassette-based games that autorun 

D 

ess I stated above that giving thos e long disk 
ZXir QLrve Alive! 12 



commands preceded by RAND USR 100: or PRINT #4: 
can get old after a while. I also noted the manual was a bit 
cheesy. Enter T/SNUG's very own Bob Swoger, who both 
wrote his own LarKen auxiliary operating system called 
LogiCall, and rewrote the LarKen manual (which is 
bundled with LogiCall) to be clearer and more 
professional-looking. LogiCall, up to version 6 0 now, is a 
commercial program available for $15 from RMG or FWD 
Computing (see the ads elsewhere in this issue). A full 
review of LogiCall is beyond the scope of this article; a 
review of LogiCall 5.0/5.2 by Abed Kahale appeared in the 
Spring 94 issue of ZXir QLive Alive!, and Bob Swoger 
himself wrote a piece on LogiCall for the Fall 1996 issue. 
But suffice it to say here that it makes your life easier. You 
can arrange to autoload LogiCall by holding the ENTER 
button when you turn on the unit. (Actually, this autoload 
capability is built into LKDOS and is not unique to 
LogiCall, but LogiCall makes the best use of it) LogiCall 
men presents you with a disk menu; you can move to get a 
menu from another drive with a single keystroke. The 
system allows you to load the program you want by typing 
in the name or cursoring down to it; and, you can perform 
many disk functions (like renaming, getting a disk 
CATalogue, or erasing) right from the menu with a couple 
of keystrokes. The software makes calls to certain utilities 
particularly easy, and even integrates a number of 
application programs (like Tasword Two and Vu-File) into 
the LogiCall system so that you may return to the LogiCall 
menu after exiting such programs without resetting the 
computer. Abed indicated in his article that using LogiCall 
was like upgrading from a gear-shift to an automatic with 
overdrive, and the analogy is useful. Perhaps more 
precisely, it feels like upgrading from a disk system which 
is a functional but somewhat awkward add-on to a 
computer not really designed for disk usage, to a system in 
winch tiie drives are integrated so well that they appear' to 
have been part of the system from the start. 1 would 
definitely recommend the LogiCall software. 

□ 

Incidentally, LogiCall provides a clue about how to 
set up your 2068 system to achieve maximum text 
readability: it automatically changes the video display to 
light letters on a dark background, the opposite of normal. 
As you likely know from experience, a light screen tends to 
be overrun with what Fred Blechman's "The Timex 
Sinclair 2068 Beginner/Intermediate Guide" refers to as the 
"crawlies", being "wiggle lines that pervade the picture and 
are particularly noticeable on boundaries between colors." 
TVs show a lot of crawlies, and monitors aren't much 
better. Worse, color displays of any kind- TVs or 
monitors- can also show color bleeding and other color 
side effects that hurt text clarity. My suggestion is to 
follow LogiCall' s lead as far as it will go by finding a 
monitor that is monochrome composite (sometimes called 
"black and white" although usually green or amber on 
black). These things are practically being given away ($5- 
$10) when you run into them at garage sales and similar 
locales. By going light text on dark (which can be done 
with the appropriate PAPER. INK and BORDER 
commands if you do not have LogiCall), and by turning 

Spring 1997 



down the brightness on the monitor until the background is 
completely black, you can get sharp, readable text with an 
absolute minimum of crawEes and no color bleeding. You 
will especially appreciate this if/when you go into Display 
Mode 2 (64 column text) to use Tasword Two or other text 
applications. I would recommend in particular one of the 
old Zenith Data Systems monitors, which have a "40-80" 
switch on back. The "40" setting gives you a normal 
picture, while the "80" setting widens the aspect ratio of 
the picture, making those tall & thin 64 column characters 
fill out a bit more for better viewing. This is a FAR better 
situation video-wise than having to squint to tell a "w" 
from a "u" while crawlies and color bleedrne run wild 



across your screen. 



Several other types of disk interfaces are available 
for T/S systems. In the same Spring 94 issue mentioned 
above is information from The John Oliger Company (see 
ad elsewhere in this issue) as to "why the Oliger disk I/F 
with JLO Safe is the best available for your TS-2068". 
AERCO, Ramex, and Zebra (TOS) are other choices you 
may run into in the used market. Not having any of these 
others, I cannot offer a comparison. But I can state that the 
LarKen (particularly mated with LogiCall) offers a number 
of convenient features and works quite reliably. It would 
not be a bad choice for any 2068 owner. 



QHJ Announces New Freeware 



QHJ Freeware has just recieved the following new QL 
programs As with all QHJ Freeware files, these can be yours 
by just sending disks and return postage to the address 
below. 

From Jonathan Hudson: 

Qeyes (8kb, 1 Jan 97) 

PE Button that has two eyes that follow mouse cursor. 
2giftif(80kb,4Jan97) 

Tools to convert _scn and _pic to GIF, TIFF, or PBM. 
MIME Tools (439kb, 1 Jan 97) 

Tools to handle MIME files (Binary E-Mail riles). MetamaiL 
mailto, splirmaiL mmencode, etc. 
Ghostscript 2.6.2 release 3 ( 24 Dec 96) 
Program to view and print Poscript files. (3 files) 
(506kb, 683kb, 683kb) 
QVM .008 beta (145kb, 25 Dec 96) 
Quintessential voice mail. Supports QFAX 2.80 Class 2 mode 
QFAX2.80 (5 Oct 96) 
Execs and Docs (225kb) 
Support Files (243kb) 
Poscript Manuals (157kb) 
HTML manuals (89kb) 
PS-Printer Bug Fix (SSkb, 6 Nov 96) 
Fixed Things Utilities (36kb, 26 Oct 96) 

From Jerome Grimbert: 

Comes a Chess program for the Pointer Environment.. 
chess.zip (184K) 

From Phi! Borman; (all released 6 Jan 97) 
Pboxl.16 Latest Pbox BBS Program 
Fido 1 . 16 Fido mailer and assoc. utiis 
QWK 1.16 QEK Offline reader 
QtoP 1.16 Qbox to Pbox conversion routines 

From Arvid Borretzen: 

Norbak Backup program 
Doctor File/Hex editor 

From Dave Walker: 

C68 Compiler Binary Update (68kb, 17 Nov 96) 
C68 Compiler Source (390kb, 10 Dec 96) 
C68 Compiler Docs (35kb, 10 Dec 96) 
(All of the above require C68 4.21a) 
GWASS Assembler 3.22 Binary (50kb, 20 Nov 96) 
GWASS Assembler 3.22 Binary + Source (224kb, 20 Nov 96) 



C68 LIBC 4.22d (75kb, 8 Dec 96) 

FPU Support for QDOS 1,12 Binaries (45kb, 1 Jan 96) 

QL Profiler (60kb) (Author: Francois Lanciault) 

Tells you where C program spends most of its time. 
If there is any other software that you have heard about, 
that is not on this "list or my main list, please let me know 
and I'll look into getting it. All of these files have been 
downloaded from various web pages. My thanks for those 
that did this, since it makes getting the software so much 
easier and taster. 

QHJ FREEWARE 

C/O TIMOTHY SWENSON 

38725 LEXINGTON ST 230 

FREMONT CA 94538 

(510)790-7034 
http://vvwvy.geocities.com/SiiiconVailey/Pines/5885 

introducing Aurora 
QL Graphics card 

The Aurora is a replacement QL motherboard and a 
graphics card, all in one product. It is intended to be used in 
boxed QL's with PC power supplies, but can also (with 
some work) be mounted into a standard QL casing (this 
involves soldering, though, and should be undertaken only 
by people who know what they are doing! ! !).. 

The Aurora requires the user to pull out the 8302 ULA 
and any kind of IPC (and/or keyboard interface) from their 
existing QL setups and plug those chips into the Aurora. 
We can also supply Aurora with 8302 and/or IPC of your 
choice for an additional price. 

Features 

Can use old QL and VGA, SVGA or midrange 
mulosynch monitors, displaying various maximum 
resolutions (depending on the monitor). Output levels can 
be set using jumpers on the board to acomodate 
monochrome, TTL RGB, analogue RGB or TTL-level 
analogue RGB (Microvitec CUB) monitors. Depending on 
the monitor type various connector adapters may be needed 
- the board is delivered with a VGA 15-pin mini-D 
connector adapter (as used with VGA/SVGA and most 
mulfisynch monitors) 



ZXir QLrve Alive! 



13 



Spring 1997 



Maximum resolution is 1024x768 in 4 colours (MODE 
4), 512x768 in 8 colours (MODE 8), 1024x480 in 16 colours, 
512x480 in 256 Mousing holes in c^^^ 
colours. The actual ^^^|^f^i^|aSi§fe^fS 
maximum resolution C^ (ofily 
displayed mav be fortliebrav 



riser-sockets (available on request) even the Falkenberg 
interface will work (although it's almost as large as Aurora). 



. connector 



:Bf*ROM capacity) 



may 

lower depending on 
the monitor type. In 
particular, old QL 
monitors will display a 
maximum of 
1024x288 if interlacing 
is disabled, and 
1024x576 if interlacing 
is enabled. VGA and 
SVGA monitors will 
also display a 
maximum of 
1 024x576 if interlacing 
is disabled. Refresh 
frequencies have been 
optimised to the 
highest permissible 
rate on the monitor 
selected. Hie Aurora 
will in any case 
automatically limit the 
size of the display 1 • ::; - ;/ '-- ; v '' 
depending on both monitor and Aurora's limits. Interlace 
enabling is left to the user (this can affect resolutions 
displayed) - interlaced displays will not be of high quality 
on QL monitors, this being the fault of the monitor itself. 

Resolution is selected on the basis of 4 horisontal 
resolutions: 512, 640, 768 and 1024 pixels. In addition, for 
any of the 4, one of two aspect ratios can be selected - 2:1, 
common to QL displays, where the number of pixels in the 
vertical direction is half of that in the horisontal (512x256, 
640x320, 768x384, 1024x512), and 4:3, common to QXL, 
QPC and QVME users (512x384, 640x480, 768x576, 
1024x768). 

Modes are selected separate of resolution. Mode 4, 
and the new modes with 16 and 256 colours are provided. 
Mode 8 is also provided for compatibility, and will display 
half the pixels in the horisontal direction with respect to 
mode 4, just as a QXL would. As on the QXL, flashing in 
mode 8 is ignored, but the data for it is retained for 
compatibility reasons. 

Programs accessing the original screen area will display a 
picture in the top lefthand corner, regardless of resolution 
selected, as long as the screen is an mode 4 or 8. 

Please note that in order to use the higher resolutions 
and more colours, a Super Gold Card is required. Tne card 
can be used with a Gold Card as well. The ability to use 
VGA/SVGA or multisynch monitors is NOT affected by the 
use of SGC or GC - mis will work with both.</b> 

Will accept any IPC on the market (superHermes is 
highly recommended, there is a special superHermes 
jumper which relieves you from using the superHermes 
flying lead) and any PC keyboard interface - with some 



Monitor. Output 
je vet jumpers 



Monitor 
Reset,- siet*' 



S^^^^^M— speaker, power 
nHI: . ; ' and ncYLEDs - 




Sera 



.. jumpers 



;M«fflbjrsM fayfear4;3?*dv .; : 
CAii^) IPC cbip 6noi« your QL /rvV 




Serial port connectors provided can be used with PC- 
style connectors (as used on PC 10 cards), using simple flat 
cable with press-on connector adapters (IDC 10 to D9). 
Ports use the standard PC wiring so you can use standard 
PC cables you can cheaply buy in computer shops. 

On-board QIMI compatible mouse interface is 
provided for QIMI users, as the original QIMI interface 
cannot fit onto the board because of the size). 

Enhanced ROM socket can accept. QL ROMS (both 
stacked onto each other, piggyback), Miner/a (any version) 
or an EPROM (including the Minerva EPROM without the 
Minerva PCB), 64, 128, 256 and 512k sizes are supported, 
with the OS automatically recognised in the first 48k. We 
are currently working on extensions which will enable 
loading of programs from the EPROM if a larger size 
EPROM is used. Type of chip used in the ROM socket is 
selected by jumpers. 

Enhanced ROM slot can be used with existing ROM 
slot peripherals (by use of a small adapter cable;. For 
tinkerers, additional lines are supplied - RAV, RESET, 
EXTINT and a special select line which decodes the unused 
part of the QLs IO area (15.5k total space). 

Membrane keyboard and mouse connectors have been 
replaced by a 20-pin header. This can be used for 
applications which need only a few keys, or with an adapter 
(1 1 diodes and some cable - total cost about 5 Pounds) the 
QL membrane keyboard can be connected. 

The board is powered from 5V power, we suggest 
using a QPlane for this (an easy, no-solder solution), in case 
of fitting into a QL case, a separate connector is used to 
connect a +5, +12 and -12 (and optional +9V) power 
supply, which the user has to provide. 



ZXir QLive Alive! 



Spring .1997 



PC case compatible header is provided for a reset 
switch, power LED, speaker, and network LED (we use the 
PC case Turbo led for this!), A simple cable adapter will 
connect standard QL net ports to this header as well. 

There are NO nucrodrives and NO TV modulator! ! 
DRIVERS 

Immediate high resolution support, is available for 
SMSQ/E users, in modes 4 and 8, by applying a patch to 
SMSQ/E. 16 and 256 colour drivers will be available in the 

future (see below!) 

LAST MINUTE NEWS 

Tony Tebby is currently working on extended screen 
drivers which will allow more colours to be used on QXLs 
and QPCs, and possibly other SMSQ/E systems. We are 
taking steps to insure that they will work on the Aurora too! 

The card will be available in 4 to 5 weeks from 
Qubbesoft PD, for 120 UK Pounds, plus postage and 
packing, user manual, SMSQ/E patch software and utilities, 
and VGA lead included. 

FUTURE PRODUCTS 

We intend on producing a successor to the Super Gold 
Card, again we haven't thought of a name for it yet but it 
might be called 'The Gold Fire'. The project name we have 



given it is 'The Super Duper Gold Card', this doesn't mean 
it is going to be called this when we release it for resale. 
Early specifications are as follows; - 

Upto 64Mb of RAM using a 72 pin SIMM, options 
being 1,2,4,8,16,32 or 64MB. A Bi-directional Parrallel port 
enabling connection of back-up devices etc. An I2C port 
similar to the one on Minerva. 

Other items that we are looking into producing are an 
ETHERNET Card for the QL, which will speed up the QL - 
> QL Network. A FLASH EPROM card that can be 
programmed and re-programmed from software. 

If their is an>1hing that you feel the QL is lacking, 
hardware wise that is, please let us know and we will try our 
best to look into it and see if it's possible. For further 
information on any of the products we carry for the Sinclair 
QL please contact us at the address below:- 
QUBBESOFT P/D 
38, BRUNWiN ROAD 
RAYNE, BRAINTREE 
ESSEX. CM? 5BU 
UK 

TEL: +44 (0)1376 347852 
FAX: +44(0)1376 331267 




#26 December 1996 



Supporting All QL Programmers 



by Tim Swensori 



The QL Hacker's Journal (QHJ) is published by Tim 
Swenson as a service to the QL Community. The QHJ is 
freely distributable.. Past issues are available on disk, via e- 
mail, or via the Anon-FTP server, garbouwasa.fi. The QHJ 
is always on the look out for article submissions. 
QL Hacker's Journal 
c/o Tim Swenson 
38725 Lexington St #230 
Fremont, CA 94536 
swensont@geocities.com 

Mtp://www..geocities..com/SilconVal.ley/Pines/586.5/index.h 
tail 



Uxor s fon 

It's hard to believe that the last QHJ came out last 
May. What have I been doing? Well, let me tell you.. 
Since May 1 have had a number of life changes that have 
kept me busy. 

The first is a change in jobs. I decided to leave the Air 
Force and seek employment else where. I spent a number 
of months looking tlirough technical career newspapers 
and various technical job related web pages, looking for 
job openings. I found the San Jose Mercury News Talent 
Center to be about the best place to look, esp. for the SF 
Bay Area, 

Related to the first change, was leaving my job. I had 
to finish a few tasks and then document my job so I could 
pass it along to someone else. Documenting what you 
know is not as easy as it sounds. I also had to spend some 
time out-processing from the service.. It takes paperwork to 



ZXir QLive Alive! 



15 



get in the service, and it takes even, more to get out. 

The final and biggest, change was moving from 
Dayton, OH, back to the SF Bay Area, Getting the house 
ready for moving and getting it ready to sell took a while. I 
had to do some painting, replace a few doors (one cracked 
and one warped), patch some mortar on the brick outside 
of the house, and a few other household chores.. 

This all left very little time for hobbies. About the 
only time I used the QL was writing cover letters and 
printing Resumes, And since the move my access to the 
Net, esp.. USENET has been limited. 

I am waiting for my house to sell in Ohio, so I moved 
into an apartment. This meant that I had to put a number 
of household goods in storage. The movers did not do a 
good job of putting the right stuff in the right boxes so I 
could get what I needed off the moving van and put the 
stuff 1 did not need in storage . This meant that my QL is 
with me, but. the disk drives, power supply, mouse, and 
modem cable are in storage. I've had to borrow disk 
drives, a PC power supply, and a QL power supply to get 
the QL up and rartning. I still have to make a modem 
cable. I'm using my Z88 for my telecomm needs, and it's 
tough finding an Internet Service Provider that, supports 8 
lines of display (real tough). Once I get a modem cable 
built I should be able to read comp.sys.sinclair. 

Speaking of the Z88, most of this issue lias been 
written on the Z88 while riding BART (the local commuter 
rail system) to work. I have about a 50 minute BART ride, 
so I have lots of time to put to good use. 

And also spe aking of work, I am now working for a 

Spring 1997 



company in Berkeley called Project Technology. They 
were founded by Sally Schelor and Steve Melor, creators 
of the SM Object Oriented Analysis Method. My job is to 
maintain the Sun UNIX boxes and the PC's. 

While I've been busy doing non-QHJ things, I 
noticed that no one sent me e-mail asking where the next 
QHJ issue was. I'm not too sure if this is a good sign or 
not. Granted it was nice not to be bugged, but then I have 
to wonder if the QHJ was missed. 

One thing you will notice with this issue is the 
number of articles with no code. I have not had the time to 
sit and code at the QL, so I've written some articles and 
covered what code was necessary with pseudo-code. 

Well, that's about enough for me. Oh, since I have 
just moved, please note the new snail mail address, but 
don't write it down in ink. I hope to buy a house 
sometime around the March or April '97 time frame. Here 
now the newsletter. 

Exclusive OR Encryption 

I've always been interested in encryption. Keeping 
my files safe from prying eyes has been more of a want 
than, a need. Plus encryption is a neat programming 
problem to solve. Many years ago I wrote a program 
called QL Crypt that was my first look at encryption. In 
QHJ XX there was Complex ASCII Rotation (CAR) that 
was aimed at encrypting mail messages just enough to 
make mem secure from casual observers. There are many 
other ways to encrypt files, each with it's own level of 
safety. 

Encryption is based on two parts, the Method and the 
Key. The Method is what various computations are 
performed to get from the clear text to the encrypted text. 
This is equivalent to a lock. The Key is the chunk of data 
used to make one encryption different than an other. Since 
the encryption Method does not change, it is the Key that 
makes your text encrypted different from somebody else's. 
This is the equivalent to, well, a key. A specific model of 
lock is manufactured into a thousands of individual locks. 
These locks all look and work the same. It is the key that 
makes each one secure and different from the others. 

There are many methods used in encryption, from the 
very easy to break, to the damn near impossible, line 
harder to break, the more computation necessary to 
encrypt. If you are worried about wasting computational 
cycles, then you need only implement the Method that 
secures the information to the level you need it. Securing a 
Christmas gift list is different than securing company trade 
secrets. 

QL Crypt and CAR both used a character rotation 
Method for encryption. 

As each character was read in, a value of 1 -4 would be 
added to their character value (CHR$), based on the Key, 
and then output to the resultant file. QL Crypt allowed the 
encryption of binary files, CAR stayed with pure ASCII 
text so that it could be sent in e-mail. 

Each one of these Methods, and many more, require 
the use oftwo functions that are the opposite of each other. 
In character rotation, a value would be added to encrypt, 
and subtracted to decrypt. What ever gyrations you go 



through to encrypt you must reverse to decrypt. Exclusive 
OR encryption does not have two opposite functions 
because Exclusive OR is the opposite of itself. 
Exclusive OR (XOR) 



Bit 1__ Bit 2 XOR 

0 0 0 

1 0 1 

0 1 1 

1 1 0 



When using Exclusive OR with a bit pattern, what you 
XOR it with is usually called the Mask. To show you how 
XOR is the opposite of itself let take a look at the binary 
pattern 0101 10 XORed with the mask 111111. 
Bit Mask XOR Bit Mask XOR 



0 11110 
110 0 11 

011110 

110 0 11 

110 0 11 

0 3 1110 



Notice that after XORing the bit pattern with the 
mask and then XORing the resultant bit pattern with the 
mask the original bit pattern returns. This means that 
writing the program to implement XOR encryption does 
not require the writing of an encryption routine and a 
decryption routine, only one is XOR routine is needed. 

The Mask that is used in the XOR routine is derived 
from the Key. How secure you data is, is dependent on the 
Key and its length. If you use a Key of length one (1 byte) 
then it would take only 256 tries to break the encryption. 
The longer the Key, the more tries necessary to break the 
encryption. 

QL Crypt used the random number table in the QL as 
the key. A password was ENTERed from the user, which 
then was used as the seed value for the random number 
table. This makes for very strong encryption (as the 
random number table is fairly large and makes a long Key), 
but it make it impossible to port to other platforms. Even 
differences in QL ROMs could cause the program to fail. 

CAR used a ASCII password ENTERed by the user. 
This makes the program very portable, but also makes it a 
weaker form of encryption. If the user typed in a fairly 
long password, then the level of security would go up. 

Constructing a Spell Checker 

A spell checker is usually comprised oftwo parts: 

1) word lookup (to see if a word is spelled correctly) 

2) word suggestion (to suggest the correct spelling of 
the word). Past issues of the QHJ have looked at different 
algorithms to tell how close two words are, a key part of 
word suggestion. This article will focus on word lookup. 

The key thing to decide in creating the word lookup 
algorithm is the data structure for storing the words and 
quickly looking them up. If the word list was fairly short, a 
brute force method would work. Since most spell checkers 
will need a word list in the tens of thousands, the lookup 
algorithm will need to be smarter. We also need to keep in 
mind that the words will be of many different lengths. 

At first the most obvious data structure would be a 
tree structure. A word would walk down the tree structure 



ZXir QLive Alive! 



16 



Spring 1997 



letter by letter. When it reached the end of its length it 
would check the current tree node to see if it is a valid 

word. Let's take a look at three words, bar, bard, and ban, 
and the following tree structure. 

b 



b 



\ 



r 

/ \ 
d n 

With the word BAR, the B is valid, with leads to an A 
which is valid and it leads to an R which is valid. The R 
node will have a value of 1 to signify that it is the end of a 
valid word. This way the structure can parse both BAR 
and BARN and distinguish between the two. When 
parsing BARB:, the B is fine, which leads to A, which leads 
to R, but now there is no R path in the tree and the word is 
determined to be invalid, 

The problem with mis data structure is two fold: one, 
you need to construct it out of the dictionary file at run 
time, which can take some time, or you need to find a way 
to store it so it can be read in easily. The second problems 
is that the language we are going to construct the spell 
checker in is SuperBASIC, which does not easily support 
making tree structures. They are easily created with C 
structures or Pascal records. 

We could use a hashing algorithm since, it is designed 
for very quick look up, but wife a very static list of words, 
our hashing algorithm may require more data space than 
we really need. 

We need to come up with some data stnicture that is 
tailored to our needs. One that will provide a fairly quick 



look up and minimize on the data space needed to store the 
word list. 

Here is a suggestion: Store the words in a flat array. 
The words will be pre-sorfed on disk, first by the length of 
the word and then alphabetically. This means that all of 
the two letter words will be grouped together and sorted 
alphabetically, then the three letter words, etc. Word 
length is one way to distinguish one word from an other. 

Create a two-dimensional array called 
start_array(x,y). The X value will be LENGTH and the Y 
value will be FIRST_CHAR. As the words are read in, the 
array will be used to keep hack of where the first 2 letter 
starts in the array, where the first three letter word starts, 
and so on. It will also keep track of where words start by 
the first letter. When you need to do a lookup of the word 
BAR, LENGTH is 3, FIRST CHAR is equal to B, so you 
would look up start_array(3,'B'). this will return where the 
first 3 letter word that starts with B is stored in the word 
array. From there the search can be a simple brute force 
search that compares all three letter B words to see if they 
match BAR. 

To determine where the search should end, you will 
also need to know where the first three letter C word is at. 
Tiiis can also be looked up in fee start ..array . Below is a 
little pseudo code showing how this would work, 
start = start_array(3/B*) 
stop = start_array(3 5 'C') 

FOR x = start TO stop 

IF word array$(x) = BAR. THEN EXIT success 
NEXI x 
EXIT fail 



Sit*fin# Qhe QM With Qlm, 2068 

On Addressing The Internet, Using The Timex -Sinclair Model 2066 by David Lassov 



In tlris article, we discuss several services, provided to 
us in subscription form, by a computer, that speaks UNIX. 

We have something to say about telnet, email, 
mailing lists, the web, Usenet, gopher, and ftp. 

After using telnet to establish computer contact, the 
rest of those programs communicate off-line. ON-LINE 
communications (in real time) use talk, ire, or muds. 

First, we use the telephone, to CONNECT with our 
Internet provider, in order to show fee UNIX prompt, 
on the screen. 

TELNET 

Telnet is a facility, so fundamental and so old in the 
history of accessing computers;, as to answer the phone 
whenever we make our initial call to the Internet service. 
Then, of course, Telnet serves to CONNECT us to 
whatever other computers on the Internet, that we desire to 
talk to. 

Boy, this must really kill the guys at the telephone 
company, as they try to get a piece of each such action! 
Here is how it goes for me. 1 call 520-806-4700, which 
responds with "azstamef and a request for a user name. 



After that, it asks for my password. Lastly, it asks for the 
computer I want to work on, since Arizona Starnet has a 
lot of computers. After "connect" appears, the 
banner/main menu is displayed. 

Should I type "telnet user-name@computer-name", 
then a brief pause ensues, based upon Internet traffic, 
followed by a response with site-name and a request for a 
user name. After that, it asks for my password. Lastly, ... 
, as above. From fee foregoing, you should see, that using 
Telnet is like calling a BBS, e.g., SOL BBS at 520 882 0388 
with "guest" as a user name and "guest" as a password. 

By a careful reading of the above, you should also 
see, that each TELNET site differs in log-on procedure, as 
much as it differs in general content. This includes fee 
initial call to your Internet service! 

Anyway, by going through the above steps, you have 
gained access to the Internet and/or access to whatever 
other site on the Internet, you might have addressed. 

E-MAIL (Electronic Mail) 

We use program MAIL, in order to SEND mail over 
the Internet, using the 2068 computer and a shell account, 



ZXir QLive Alive! 



17 



Spring 1997 



in order to access the web. J don't know all the details, but 
MaxCom software does not seem to entirely emulate the 
VT100 terminal, because we cannot go UP on the screen 
and, hence, we are limited to line editors . 

Shell accounts usually use "PINE" and "PICO" to 
send mail but, alas, they use foil-screen editors. But, they 
replaced "mail", which, has been left as a rather efficient 
line editor, and "mail" sine does a good job! 

Suppose we are looking at the UNIX prompt, "$", on 
the screen. Then, we type "mail user-name@computer- 
name" in order to set up the computer, for SENDing the 
message which follows, to the user with user-name "user- 
name" at the computer, bearing the name "computer- 
name" 

Next, my cursor jumps to the start of the next line, 
which is blank, of course (no full-screen editor!). I enter 
the message, line by line (back-space editing only). I 
terminate the message, by typing only "." on a line and 
pressing ENTER. The message can also be terminated, by 
typing A D or A d on a blank line, where A denotes first 
pressing the CONTROL key, (CAPS-SHIFT/EDIT on the 
2068 with MaxCom). When the UNIX prompt $ 
consequently appears, the message will have been SENT to 
the addressee, user-name@computer-name. 

Now, in order to check for your own email, simply 
type "mail" and press ENTER... A response of NO MAIL 
means an empty mailbox. Otherwise, "FROM: ..." will 
appear, followed by any first email message in your 
mailbox. 

After listing an email message to you, the UNIX 
prompt $ will appeal., This initiates a reply, should you type 
"r" 

and press ENTER,. This also deletes that particular 
letter from your mailbox. In ordei to delete the letter only 
(without, a reply,) then simply type "d" after the UNIX 
prompt. 

MAILING lists 

These are something we can join, in order to keep our 
electronic mailboxes filled with interesting stuff. 

For example, open your download buffer, in order to 
get an ASCII copy of the following session, where you get 
the UNIX prompt onto the screen, and then ENTER the 
line: 

http://scmvw.ucs .indiana. eduinlarchiv 
Don't forget to close the download buffer, when 

finished! 

It contains information on how to join (or leave) 
mailing lists, each devoted to a specific special interest 

group. 

Whenever a member submits email to the mailing list, 
then it is immediately sent to all other members of the 
group. 

So, all you need to know is how to send and receive 
email. Also, the address of an interesting mailing list to talk' 
with, would be helpful. :-) 

FTP - File Transfer Protocol 

"ftp" is the name of the UNIX program, for 
implementing FTP. First, get the UNIX prompt "$" on the 
screen. ENTER "ftp" alone, followed on the next line by 



"open rtfm.mit.edu". This last will be in response to the ftp 
prompt, "ftp>" resulting from the initial entry of "ftp". 
Alternatively, we can connect to the remote host, 
"rtfm.mit.edu"., by ENTERing the line: 

ffprtfrn.mit.edu 

The ftp facility can be terminated, by typing "quit", in 
response to any ftp> prompt. 

Use the "get" command, to download any file to your 
current directory. 

Of course, you should already have set up a directory 
on the UNIX system, where you store your downloaded 
files. Do this, BEFORE you use ftp to access the remote 
directory. Furthermore, mere are simple commands like 
"cd", to change to the desired remote directory. 

Now, we can up- and down-LOAD all kinds of files, 
as the Internet machine with UNIX is" a bit more 
sophisticated than our 2068 system. 

Just be aware, that: downloads to our 2068 system are 
limited to ASCII transfers. 

USENET(news groups) 

The UNIX program for accessing USENET is called 
"tin". Now, if you just ENTER the name "tin" then would 
follow an endless sequence of questions, on subscribing to 
new news groups, each question demanding a YES or NO 
answer, followed by an identical question !! So, here is 
what we do: 

At the UNIX prompt, "$", ENTER "tin -q". This will 
bring up a menu of ALL news groups, which you have 
used. You can enter any news group on the list, by 
ENTERing its line number from the list, followed by 
another ENTER... We escape back to the last, menu, by 
ENTERing "q". We can keep ENTERing q's like this, till 
we reach the UNIX prompt. 

At the UNIX prompt, we can also choose to read a 
specific news group, say "alt Id." on one-dimensional 
figures, by ENTERing the line "tin -q alt. Id" and, yes, the 
space(s) following "tin" are critical] 

The important tiling is the ability to arrive at the 
UNIX prompt, "$", on the screen. While this is more 
complicated, than lifting a telephone receiver for the dial 
tone, this is still a simple task, costs about $20 monthly, 
and requires the advice of your Internet service provider. 
So, when signing up for Internet access, be sure to keep 
track of the telephone number of the SYSOP (system 
administrator!) 

GOPHER 

Let's explore gopherspace! Sounds like the 
underworld, doesn't it! To do this, we call on a UNIX 
program, called "gopher" 

While looking at the UNIX prompt, "$", we can type 
"gopher" and then press ENTER. This will access any 
local gopher site, as set up by the SYSOP. In order to 
access a specific gopher site, say wiretap.spies.com, then 
enter the line: 

gopher wirefap.spies.com 
Up comes the MENU, most of whose items refer to 
other Menus. So, choose an item, by ENTERing its line 
number, or by pressing the space key, or space bar, till the 
item is displayed at screen bottom. Then, enter the item, 



ZXir QLive Alive! 



18 



Spring 1997 



by pressing ENTER. 

After thus searching the Menus for your particularly 
interesting item, then enter the item, by pressing ENTER. 
Next, program "gopher" will fetch your topic and display 
the text on your screen, one page at a time. 

So, you can spend all day (or night!) exploring the 
underworld of gopherspace, using only six basic 
commands: "k" (or A P) and "j" (or A N) to move UP and 
DOWN within a menu, respectively, ENTER and "u" to 
move from one menu to the next or previous, respectively; 
and SPACE (or > or +) and "b" (or < or -) to page forward 
and backward through long Menus, respectively . 

Should we get lost amongst all these Menus of 
Menus, we can always type "m", to escape to the initial 
menu! 

At the UNIX prompt, "$", we can escape back to the 
Internet main menu, by typing "stop" or A D. We terminate 
the session, by escaping the Internet with A C at the main 
MENU! 

THE NET 

The net is man's latest attempt at a universal 
communication system. 

After using fee phone to connect to an Internet 
provider (like using TELNET), mailing lists offered the first 
such attempt. Then, USENET followed with a little better 
access to the web, in order to support newsgroups of 
common interests (like using message bases and BBSs.) 
The gopher system improved on those capabilities a bit 
with menu-driven access (like Menus of Menus of ... .) 
Then, Hie World Wide Web (www) was developed at Cern 
in Switzerland, to access massive amounts of Physics 
information. Thanks to Marc Andreesen and his program, 
MOSAIC, the www degenerated into THE WEB: A 
complete information system with links, to permit EASY 
jumping from ideas to words to pictures to sounds .... 
Now, Goedel's Theorem, that completeness is tantamount 
to inconsistency, is surely applicable here, as there is little 
consistency in the NET. 

LYNX is the program, used to access the web from a 
shell account. It runs on the Internet computer and 
riimishes all the above words and ideas of the web. 

Be that what it may, we presume, that we are looking 
at the UNIX prompt, "$", on our screen, CRT, or monitor. 
If you simply type "lynx" and press ENTER, then you 
should get the banner for your local Internet system, that 
you are now using. In order to get access to somebody 
else's site, you have to type their user-name@,computer- 
name, after typing "lynx " . Of course, it is important to 
separate "lynx" from "user-name@computer-name" (by 
spaces.) 

The above procedure should result in any site's 
banner and/or main menu. 

TALK 

The talk facility is implemented by the UNIX 
program, "talk" 

Usage is the same as SOL BBS in TALK mode or in 
TERM mode. Some people refer to this interchange of 
ASCII information as CHAT mode. The other person 
needs a talk' facility, which is compatible with the UNIX 



"talk" program. It also helps, that they are at the computer, 
addressed on the Internet. :-) 

Programs for talk, which are compatible with UNIX 
"talk" are available on the Internet for download at no 
cost, using anonymous ftp. ENTER the following line : 
talk user-name@computer-name 

in order to connect (for free) to the person, using 
user-name "user-name" at the computer "computer-name" 

If the person is there and not busy, then he or she 
will be paged and asked to respond with a like talk 
command using our user-name and computer-name. 
Connection follows, and you can both begin talking. 

If the person is there and busy, then [Ringing your 
party again] will appear on our screen every ten seconds, 
till either connection is established or we press A C. Before 
we try to talk to someone, using the talk facility, always 
"finger" them with the line : 

finger user-name@computer-name 

The information from finger should tell us, whether 
tire person is logged-in and willing to talk. 

The conversation can be terminated, when someone 
hits A C. 

Then, the UNIX prompt, "$", reappears. 

These are like FREE phone calls, all over the world 1 

INTERNET RELAY CHAT 

This is an ultimate TALK facility, talk, talk, talk,..,., 
talk. Once on board, everytlring you type is printed to 
everyone else's screen, and you see everything typed by 
everyone else! 

Private messages, can be sent and/or received to/from 
any on-line user. For a list of the (thousands of) users, on- 
line, type /LIST 

Anyway, in order to access this facility, get the UNIX 
prompt, "$", on the screen, and ENTER "ire" 

My local access is to EFNET, which has users from 
over nineteen countries (foreign languages!) 

For example, there is a guy from downtown Belgrade, 
Yugoslavia, broadcasting on student activities there. He 
uses an ire channel. Also, some guy is listed as "silversto" 
which is my birth name. Wonder what's on his mind ... ! 
Most exchange is in English, but I saw some Spanish Engo 
in the LIST. 

MULTI-USER DUNGEONS 

A MUD is a game program. No, it's much more, since it 

provides a game environment among several players. 
That's how muds are all the same. Mud's are all different, 
by providing different environments, relating the players ... 
differently! You are going to have to ask your friends, 
about which ones to choose. 
HINTS 

Three hints will make life a lot easier at the keyboard 
of our 2068' s, when accessing the Internet. 

1. Get the UNIX prompt, "$", onto the screen. 
Then, ENTER the line: 

stty erase A H 

This will set the description of our TTY, to accept the 
2068 DELETE of CAP-SHIFT/ "0", whereas the UNIX 
system is looking for a DEL character, such as generated 
by DELETE on my APPLE II C+. 



ZXir QLwe Alive! 



19 



Spring 1997 



2. Describe the screen width of the 2068 system as : 
stty COLS 63 

3. Similarly, set the screen length with : stty ROWS 

18 

When I get $ onto the screen, the FIRST tiling I do is 



item #1, above. If I make typing errors, and the backspace 
is the ONLY device available to line editors. Hints #2 and 
#3 are useful, only when I want to READ the screen, page 
by page. 




A few years ago, MIRACLE SYSTEMS redesigned 
their parallel printer interlace so that its circuitry now fits 
safely within the confines of what would appear - from a 
distance -- to be a standard, metal CENTRONIC S plug. 

Oh, how I wish this had been the original design. I 
don't know what your experience was with the older style 
parallel interface, but if it was similar to mine, then you 
probably had the misfortune of breaking the blue-plastic, 
CENTRONICS plug away from BOTH the black box AND 
the circuit board! 

Okay, the misfortune means one of a few tilings : 

1) I am clumsy; AND, 

2) my printer is NOT well situated; and/or, 

3) the design is unintentionally fragile. 

After "breaking" my parallel interface for the 
umpteenth time, I finally decided that, it was time to find 
my ohm-meter, warm up my 15 watt soldering iron, and 
make a short adapter cable that separated the 
CENTRONICS plug from the circuitry. 

After opening the interface box 
and looking at the short jumpers I had 
previously employed to RE -connect 
the CENTRONICS plug to the 
circuitry, it occurred to me that I might 
as well make a hard wire connnection 
directly between the circuit board and a Vrcmp of 
standard, 2.5-pin female D- iicators. 
submimature plug - the same 
connector used on the ISA boards of 



CENTRONICS plug: ^ 123456 7 S9U23456 
[front view] 

ABCDEFGHIoJooookko 



Kooooooooooooooooo 
25 female plug :*13dht987654321 [rear view] 
ABCDEFGHIoJoo 
ooooKooooooo 
Connect A' to A', 'B' to 'B', and so on. 

Note that I ran a jumper between the 'K ! pin on the 
lower row of the CENTRONICS plug and the double 'k 
pins on the upper row of the same plug. 

I used a solder-type D-connector and eleven short 
(about 6" long) pieces of multi-strand wire. 

If you are simply making an "adapter" then you may 
note that using IDC (ribbon-type) plugs should be much 
faster - only the ground ('K') connection needs to be -"off- 
set" with a jumper. 

If you are hard-wiring, look at the circuit board 



Sierra Vista HeraJd/Bisbee Dally Review, Thursday, September 12, 199S 3 A 




[ination 



IBM computers for parallel choultry, 
Using an 



Ion and 
b Eock- 
larnegie 



"IBM" connector would 
mean that I would be able to use any 
length, readily available extension 
between my QL and the printer. 

NOTE: If you are not confident 
of your soldering skills in tight areas 
then consider making a non-invasive, 
adapter cable. Also, neither I nor ZQA! 
take responsibility for the end results of 
any hardware modifications that you 
might make. 

For conceptual clarity (?) the following shows the 
"front" view (i.e., the working end) of the CENTRONICS 
plug, and the "rear" view of the 25-pin D-connector where 
you will make your solder connections. In other words, you 
will be connecting pin-1 of the CENTRONICS plug to pin- 
13 of the D-connector; and, so on. Note that you will only 
be making eleven (1 1) connections to the D-25 plug since 
there are only that many signals being used by the 
MIRACLE parallel interface. 



>ashing 
jsion of 
ipport," 
nmond, 
College, 
d direc- 




Honda-Herald/Review 



A back hoe is guided in search of Wyatt Earp's lost silver mine near 
Amm Road on the west part of Tombstone. 



carefully, and then decide where you want to make your 
connections - I chose to hard-wire directly to "pins" on the 
circuit board - visually tracing back from the 
CENTRONICS plug to the first available pin. A hard-wire 
implementation will minimize components. 

I twisted the wire together (loosely) and then wrapped 
the cluster (tightly) with electrical tape. 

Finally, I used my soldering iron to melt-away a small 
"cut-out" in the back edge of the base of the int 
black plastic box so that rm 



short pig-tail adapter could exit 



ZXir QLive Alive! 



"20- 



Sorina 1997 



the opposite end of the repaired CENTRONICS plug. Take 
your time (test fit often), and don't make the hole too large, 

Since my QL's components are nestled inside a 
salvaged PClone ease, my old style, MIRACLE parallel 
interface can now rest near the back of the case (on the 
inside) out of harm's way with the 25-pin connector firmly 
attached to the rear of the case using an available opening 
intended for this type of connection. 

I can now employ ANY LENGTH of any "standard" 
IBM printer interface cable to complete the connection of 



my QL to my printer (long IBM-type parallel printer cables 
tend to be much cheaper than a CENTRONiCS-to- 
CENTRONICS cables of equal length; and certainly, easier 
to find in a store). 

With a little effort on your part you can add the same 
flexibility and durability to your MIRACLE parallel printer 
interface. 
HAPPY TRAILS, 
AND COMPUTING, TO YOU ... 




Utility programs vary widely in functionality. Some 
utility programs are single task while others are multi-task. 
Some simply deal with file handling while others deal more 
directly with the storage medium. QLUTterJBAS is a 
simple, six function, SuperBASIC front-end and utility 
program designed to help you un-clutter the files of your 
QL's various storage media. 

QLUTter can be used to EXEC W a program, COPY 
a file from any valid medium to another, DELETE files, 
PRINT files, FORMAT media, or VIEW a file's contents. 
QLUTter can handle over 600 files utilizing a multi-screen 
display. QLUTter's only system requirement is that the 
storage media can not be write-protected. 

QLUTter EAS can be compiled and used within 
QRAM or TASKMASTER. 
{Key} INPUTs 

The primary utilities are accessed by the appropriate 
FUNCTION-key indicated in the legend a the top of the 
screen. The specific file is selected by keying the {'prefix- 
symbol'} which precedes the filename. 

The principle key inputs are as follows. 

(esc) QUIT: QUTTs procedure / program 

FI COPY: Copies files from any drive to any other. 

F2 de-FILE; Selectively DELETES a file from a drive. 

F3 HARD-COPY: LLISTs programs / LPRlNTs ASCII 
flies. 

F4 FORMAT: FORMATS a medium in any drive. 
F5 pre- VIEW: Views a file's contents, 
{ } operand: prefix selects file 
FLISTJmp 

Hie "FLISTJmp" file is created by the program to 
keep ttack of the contents of the medium, The 
"FLISTJmp" file can be IMPORTed into Quill to provide a 
formatted, hardcopy record of what is on each, medium. 

SELECTJDEViCE ! 0 S 

PRESSing '0' (zero) accesses the 'SELECT DEVICE' 
facility without going through the QUIT sequence. If you 
simply wish to change from 'flpl ' to 'fl.p2J then you do not 
have to use the ! SELECT_DEVICE' sequence. 

If you have immediate access to 'flpl ! and simply 
wish to access 'flp2 _' then simply use the 'right cursor' key. 

Similarly, if you have immediate access to 'fip2_' and 
simply wish to access "flpl J then simply use the left cursor 1 
key. 

If you wish to access a device other than 



'flplj/'ramlj/'mdvlj, then press 'o'/'O'. In addition, you 
may use: 

'g'for'flp2J 

'm' for 'mdv2 J 

'f for ram2_' 

V for 'winl ' 

To use the '[0]ther' choice, first press 'o'/'O', then input 
the three letter "name" of the device, then press file 'ENTE R' 
key, and then the number of the device, followed by 
pressing the ENTER key. 

To access 'flp3J from 'fip2 ' via the cursor keys, you 
must use a 'shift right cursor key combination. 

To access 'rami ' from 'flplj via the cursor keys, you 

must use a 'ConTRoL left cursor' key combination. 

(shift)[Function Key] 

A 'shift [Function Key]' combination MAY be used 
whenever a source disk/tape is changed instead of 
SELECTJDEVIGE. Thus, if you have a keyboard with ten 
function keys, you may use 'F& for a new source disk in the 
'COPY 1 utility; »F7' for 'de-FILE', and so on. 

CHANGE SERial [ " ] 

If your printer is attached to 'SERial 2' or you want to 
send the file over 'SERial 2' (no guarantees) for some 
reason, then you can "toggle" this option by PRESSing the 
double quote (shift ') sign after you have accessed the 
'HARD-COPY' routine. 

COPY... [F1] 

QLUTter allows for selective COPYing of fries from 
(m)any source disk(s)/tape(s) on your QL to any other 
destination medium on your QL. For example, you can 
copy from 'ram3_' to 'flpl...'; from 'flpl J to 'mdvl J; or any 
other source/destination combination you may choose. 

When you access this facility, you will see a 
FLASHING CURSOR near the top of the screen. You 
must respond to it by PRESSing either- the 'ENTER' key for 
the DEFAULT (i.e., 'flp2_' for 'flplj; 'flplj for 'flp2J; et 
cetera — the DEFAULT device will always be a like storage 
medium); or, f, rn', 'f, or 'o' (CAPS allowed), and then 
'ENTER' to indicate your choice. 

For SOURCE drives whose numerical value is greater 
than '2' the DEFAULT DESTINATION number will be one 
less than the drive number being accessed. 

If you select 'o' (OTHER) as your choice, you can 
input a single letter for standard devices, otherwise for non- 



ZXir QLive Alive! 



21 



Spring 1991 



standard devices such as on a NETwork you must INPUT 
three valid letters indicating a device in your system, and 
then PRESS the 'ENTER' key followed by the number of 
the destination device, and the the 'ENTER' key again. This 
will be the TEMPORARY DEFAULT device until you exit 
the utility. 

de-FILE ... [F2] 

"De(lete)-FILE" allows for an alternative method of 
un-cluttering your disks. Use the 'pre- VIEW utility ('F5') to 
scan the file if you are uncertain about its contents. 
You will be asked to VERIFY ('y'/'ri) prior to file 
DELETion. 

HARD-COPY ... [F3] 
"HARD-COPY" allows you to send the selected file to 
your printer. 

QLLTter recognizes Quill's "...doc" prefix and will 
generate roughly formatted output. 

Because QLUTter recognizes some CONTROL 
CODES, and because SuperBASIC LLISTings do not have 
LINE FEEDS the hardcopy output of SuperBASIC 
programs will be difficult to read. 

If you want a hardcopy LLISTing of any type, then it 
is recommened that you first IMPORT 
SuperBASIC/Archive/etc, programs into Quill (you will 
have to add a three letter extension to the name of the file 
whose core name cannot be longer than eight characters) 
and generated an appropriate ".. doc" file by SAVing the 
IMPORTed program. 

Output can be sent to either SERial port by toggling 
the double quote key. 

FORMAT ... [F4] 

"FORMATting" can be done on any standard 
medium; but, exclusion has been made for "win()_" devices 
to prevent unintended accidents. 

If you select the wrong device, the enter a name 
LONGER THAN 10 (ten) characters, and this will allow you 
to re-select or (esc)ape. 

pre-VIEW ... [F5] 

The 'pre-VIEW function allows you to view the raw 
contents of a file without having to LOAD it. SuperBASIC 
programs will appear as a LLISTing; machine code will be 
mostly unintelligible, non-ASCII characters; and, a 
Quill_doc will be displayed with breaks between paragraphs 
to make reading the file easier (in rare instances, the display 
will abort after the header and the file contents will not 
viewable). 

THE LLISTING 

The QLUTter BAS is actually a stripped version of an 
older version of the QLUSTer SuperBASIC source 
program. 

You can get a sense of how the program shares non- 
specific functions by comparing the mA/xp/dr7hd/lk 
PROCedures. For example, you could change the 
'FORMAT utility to an UN-ZIP' utility by having the 'rf 
PROCedure mimic the 'mA' PROCedure with the exception 
that the active line would read something like the following: 

If k<c then EXEC_W ramS_unzip; 
""&t$&w$&"_"&ZIP$(l to len(Zip$)-4 



ZXir QLive Alive! 



where the unzip program has been previously located 
in RAM8 . 

Of course, before attempting modifications to the 
program, you should use the program as it is LLlSTed. 

" ERROR handling is problematic and if you find the 
program hangs (as on a bad medium) then you may want to 
eliminate the "WHEN ERRor" statements from the 
'sxVxpv'rf , and ! cj' PROCedures. 

Because the QLUTter BAS LLISTing now exists as a 
stripped version of the QLUSTer utility, many of the 
PROCedure names may seem cryptic. Despite what it says 
in some compiler manuals, the length of the PROCedure 
names, string names, and variable names does affect the 
ultimate size of a compiled program. 

In lieu of REMarks, please note the following 
explanations for the program's PROCedures: 



PROCedure FUNCTION LINE NUMBER 

r z re -w i ndow 250 

Wz re - w j. ndow 2 6 0 

yeano yes-or-no option 280 

B5 beep 3 40 

wx wrong key message 3 60 

ix invalid drive message 370 

dN duplicate name message 380 

ERmsg invalid medium message 390 

esc escape message 400 

PC press key message 4.10 

CLSc clear partial screen 430 

CLSd " 440 

CLSe " 450 

CLSo " 460 

rCLS reset & clear screen 480 

zCLS CLS 500 

T top menu bar 520 

sx access device. 5 40 

sw show device 640 

FI dynamic file name(s) 7 20 

Rx rest of menu screen 730 

rx2 bottom of menu screen 800 

Uu redirect [pseudo loop] 820 

Uv " 330 

Uw " 8 40 

pk keypress 8 60 

fc3 keypress monitor 910 

mA main menu / EXEC_W 1170 

xp COPY utility 1230 

df DELETE Utility 13 30 

hd PRINT utility 1480 

rf FORMAT utility 1580 

rf? " subroutine 1610 

other " " 1830 

fmat " " 1910 

key3 keypress monitor: 2030 

lk VIEW utility 2120 

L2 " subroutine 221.0 

L3 " subroutine 2330 

L4 " subroutine 2 420 

i ne COMMAND. BAR 2 5 1. 0 

nd - ■ - 2 520 

CL " " 2 530 

K4 keypress monitor 2550 

Pick TAR/shi ft -TAB 2 610 

NxtW move command strip 2 670 

PrvW " " " 2690 

cj change DEVice 2 7 90 

NUT Next Utility 3040 
Graphi.c commands such as LINE are not used since 
BLOCK dr aws to the screen much faster and in a more 

22 Spring 1997 



consistent manner. 

SUBDIRECTORIES 
QLUTter does NOT handle sub_DIRectories; but, there are 
many front end programs such as QLUSTer and QLAMBer 
which can easily access subJDIRectories using the same 
single key design utilized by the QLUTter program.. 
HAPPY TRAILS, 
AND COMPUTING TO YOU ... 

100 REMark 

************ * * * ****** * ************ ****** 

1.10 REMark *QLUTter_BAS 3.701 8 1988-97* 
120 REMark 

* * ***■****■■*■*********■*■**■*■ + *■**■*■***■*■*■***■*■**■*■ 
130 : 

14 0 MODE 0: POKE 1.63890, 0: REMark CAPSON 
150 u$=" QLUTter 3,701: " F$="_FLIST_ imp" 
160 t$="flp": a=l: j=l: D$="serl" :x>j"=l:pn=7 
170 "B LAWKS =" REMark. 12 spaces 

130 : 

190 WINDOW#2, 512,256,0,Q:BORDER#2, 1,7: 
PAPER#2, 7 : INK#2, 0: zCLS 

200 WINDOW 4 62, 2 50, 25, 3 : BORDER 1,7: PAPER 7 
210 WINDOW#0, 413, 10, 50, 241: PAPER#0, 7 : 
INKJ0, 0 

220 OPEN#3,scr 458x200a2?x48 
230 : 

240 AT#2,21,4: PRINT #2, uS ; " by Al Feng "\TO 

3; " @ 1997 PLATYPUS Software FOR y=0 

TO 5: AT#2,22, 10: PRINT#2,y: PAUSE 10: NEXT 

y: END FOR y: PAUSE 40: tre=Q: WCh 

250 DEFine PROCedure rz: W.INDOW#0, 413, 10, 

50, 2 41: PAPER#0, 7 : INK#0, 0 : END DEFine 

260 DEFine PROCedure Wz: WINDOW 

4 62, 250, 25, 3 : END DEFine 

270 : 

280 DEFine PROCedure yeano: PAPER#2, 7: 
REPeat: ysn 
290 C$=INKEY$ 

300 IF c$=CHR$(27) OR c$=*"n" THEN ok=0: 
EXIT ysn 

310 IF c$=CHR$(10) OR c$== w y" THEN ok=l : 
EXIT ysn 

320 END REPeat ysn: END DEFine 
330 : 

340 DEFine PROCedure B5 : BEEP 900,20: PAUSE 
5: BEEP 900,40: END DEFine 
350 : 

360 DEFine PROCedure wx: AT#2, 24, 37: 
PRINT #2, "wrong key": B5: CLSd: B5 : END 
DEFine 

370 DEFine PROCedure iX: AT#2,24,35: 

PRINT#2, "invalid drive" : PAUSE 10: 
CLSd: END DEFine. 

3 8 0 DEFi ne PROCedure dN : wx: AT #2, 24, 35: 

PRINT #2, "duplicate name": PAUSE 30: 
CLSd: END DEFine 

390 DEFine PROCedure ERmsq; CLS#0: wx: iX: 
AT #2, 24, 35: 

PRINT #2, "media problem": PAUSE 10: iX: 
END DEFine 

400 DEFine PROCedure esc: AT#2,24,35: 

PRINT #2, » (esc} to abort": END DEFine 

410 DEFine PROCedure PC: CLSd: AT#2,24,27: 
INK#2 , 0 : PRINT #2 , " Pre s s [Any Key J to 

CONTINUE" : PAUSE: END DEFine 

420 : 

430 DEFine PROCedure CLSc: BLOCK 
458, 225, 0, 10, pn: END DEFine 
440 DEFine PROCedure CLSd: 



BLOCK#2, 330, 10, 83, 240, 7 : END DEFine 

450 DEFine PROCedure CLSe: BLOCK 

458, 194,0, 41, pn: END DEFine 

460 DEFine PROCedure CLo: PAPER#0,pn: 

WINDOW#0, 402, 1.1, 81, 3 4 : CLS#0: END DEFine 

470 : 

480 DEFine PROCedure rCLS: Wz: BORDER 1,5: 
END DEFine 
490 : 

500 DEFine PROCedure zCLS : BORDER#2, 1,7: 
CLS#2: END DEFine 
510 : 

520 DEFine PROCedure T: BLOCK 26,9,432,0,7: 
PAPER 7: AT 0,0: INK 0: PRINT" [El] COPY 

[F2] de-FILE [F3] Hard-COPY [F4] FORMAT 
[F5] pre-VIEW": BLOCK 458,1,0,9,5: : BORDER 
1,5: BLOCK 458,2,0,235,5: BLOCK 
458,12,0,236,7: PAPER 5: INK 0: END DEFine 
530 : 

540 DEFine PROCedure sx: DIM Z$(610,32): 
DELETE t$&a&F$ 
550 WHEN ERRor 

560 ERmsg: CLS#2: tre=0: WCh 

570 END WHEN 

580 OPEN_NEW#6, t$&a&F$ 

590 DIR#6, t$Sea&"_ n &RN$: CLOSE#6 

600 OPEN _IN#7, t$&a&F$ : FOR c=0 TO 610 

610 IF EOF (#7) THEN EXIT c 

620 INPUT #7 , Z $ ( c ) : END FOR c: CLOSE #7: c=c- 
1: IF c/76<=(j DIV 76) +1 THEN pj=(c DIV 

76) +1 AND j=(pj 1)*76+1: END IF : END 

DEFine 
630 : 

640 DEFine PROCedure sw:IF a<~8 THEN g=a-l: 

IF a>=l THEN h=g+2 
650 IF g=0 AND t$= f, flp" THEN LET tl$="ram": 

ELSE tl$="flp": END IF : gl=l 
660 IF g>0 THEN tl$=tS: gl=a-l: END IF 
670 f=c-l-76* (pj-l)-76: IF f<=0 THEN f =0 : 
END IF 

680 PAPER pn: INK. 4: AT 1,73: PRINT" ": AT 
1,55: INK hCR: PRINT" page " ; : INK mCR: 
PRINT pj; : INK hCR: PRINT" & "/: INK mCR: 
PRINT f&"+";: INK hCR: PRINT" files ": AT 
1,1: INK mCR: PRINT" (esc) " ; : INK hCR : 
PRINT "EXIT" : INK ICR: AT 3,14: PRINT 
BLANKS ; BLANK$ (1 TO 4) 
690 AT 3, 14: PRINT Z$ (0) 

700 AT 3,57: PRINT Z$ (1) ;BLANK$ (1 TO 4): 

THEN INK 2: AT 1,31: PRINT FREE/1024;" 
K";: INK hCR: PRINT" ilobytes " : END IF : END 
DEFine 
710 : 

720 DEFine PROCedure Fi : 

PRINT#3, "{";CHR$ (n+e+48) ; "} ";Z$ (n+e+j) ; 
END DEFine 

730 DEFine PROCedure Rx: INK#3,mCR: 
PAPER#3,pn: AT 3,9: PRINT t $ ; a; H : FOR e=0 
TO 18 

740 FOR n=l+e+e+e: AT#3,e, 0: Fi 
750 FOR n=2+e+e+e: AT#3,e, 19: Fi 
760 FOR n-3+e+e+e: A,T#3,e,38: Fi 
770 FOR n=4+e+e+e: AT#3,e,57: Fi 
780 NEXT e: END FOR e: rx2 
790 END DEFine sw 

800 DEFine PROCedure rx2 : PAPER#2, 7: 
AT#2, 24, 5 : INK#2, 0 : PRINT #2, CHR$ ( 188 ) ; " " : 

BLOCK 2,13, 1.8, 235, 5: AT#2,24,8: 
INK#2 , 2 : 

PRINT#2, tl$&gl;" "TO 71; t$&h; : 
AT #2, 2.4, 78 : INK#2 , 0 : PRINT #2 , CHR$ (18 9);" " : 



ZXir Qlive Alive ! 



23 



Spring 1997 



BLOCK 2,12,436,236,5: END DEFine 



CLSe: sw: Rx: k3: 

IF cD=l THEN CD=0: 
END IF : END 



810 : 

320 DEFine PROCedure Uv; 
pk; END DEFine 
830 DEFine PROCedure Ux: 
pj=l: fl=l: RN?="": 

DEFine 

840 DEFine PROCedure Uw; wx: k3 : pk: END 

DEFine 

850 ; 

860 DEFine PROCedure k3 : REPeat key 

8 70 AT 1,13: IF PEEK_W (163976) THEN INK 

mCR : 

PRINT "CAPS ON": ELSE PRINT BLANKS (1 TO 7) 
880 k=CODE { INKEY? ) : IF k>8 THEN EXIT key 
8 90 END REPeat key: END DEFine 

\J a 

910 DEFine PROCedure pk: rz: k=k~-48 
920 IF k=-21 THEN zCLS: nd 
930 IF k<=-l AND k<>-14 OR k=77 OR k=78 
THEN Uw 

940 IF k=168 AND pj<9 AND f>0 THEN pj=pj+l: 
j=j+76: Uv 

950 IF k=168 AND f=0 OR pj=9 THEN pj=l: 
j=l: Uv 

960 IF k=160 AND pj>.l THEN pj=pj-l: j=j-76: 
Uv 

970 IF k=160 AND pj<=l THEN Uw 

98 0 IF k-14 4 THEN IF a>l THEN a=a-l: Ux: 

sx: Uv: ELSE : iX: Uw 

990 IF k=.1.46 AND t?=="flp" THEN t?="ram": 
Ux: sx: Uv 

1000 IF k=146 AND t:$<>"flp" THEN t$="flp": 
Ux: sx: Uv 

1010 IF k=152 THEN IF a<2 THEN a=a+l: Ux: 
sx: Uv 

1020 IF k=79 THEN zCLS: tre=3: WCh 

1030 IF k=0 THEN zCLS: tre=0: WCh 

1040 IF k=18 4 THEN xp 

1050 IF k=186 THEN Ux: sx: xp 

1060 IF k=188 THEN df 

1070 IF k=190 THEN Ux: sx: df 

1080 IF k=192 THEN hd 

1090 IF k=194 THEN Ux: sx: hd 

1100 IF k=19€ THEN rf 

1110 IF k=198 THEN Ux: sx: : rf 

1120 IF k=200 THEN lk 

1130 IF k=202 THEN Ux: sx: lk 

1140 IF k>=C THEN Uw 

1.150 END DEFine pk 

1160 : 

1170 DEFine PROCedure rnA: hCR=2 : mCR=0: 
pn=7: zCLS: T: PAPER 7: INK 2: AT 3,2: 
PRINT " EXEC_ W" : sw : Rx 
1180 k3: pk 

1190 IF k=-14 THEN wx: GO TO 1180 

1200 IF k<c THEN EXEC W t?&a&" "&Z?(k+j) 

1210 wx: mA: END DEFine 

1220 : 

1230 DEFine PROCedure xp: pn=7: hCR=0: 
mCR=2: CLSc: T: rz: AT 0,0: PRINT" { } 
COPY ": PAPER 7: S?=t$: IF a=l THEN N?=a+1: 
ELSE N?=a-1: END IF 

12 40 INK 0: AT 3,2: PRINT" COPY "/TO 
59;BLANK$: sw: Rx 

1250 INK 0: AT 1,23: PRINT " [fJlp w &N$&"_ 
[r]am"Si N$&"_ [w]in"&N?&" " 
1260 AT 2,35:' PRINT" to] ther* : CLS#0: 
AT#2,24,33: PRINT #2, "<ENTER> = default": 
PAPER#2,7: INK 0: AT 3,31: PRINT " to 
**; BLANK?; BLANK? (TO 9): INK 2: AT 3,36: 



INPUT o$ 

1270 IF o$=="f" THEN S$="flp": ELSE IF 
o?=="w" THEN S?="win": ELSE IF o$="r" THEN 
S$="ram": ELSE IF o$=="m" THEN S$="mdv" : 
END IF 

1280 BLOCK 186, 20, 138, 10, pn: IF o$=="o" 
THEN w=l: r=3: p=3 6: Oth: S$=o$; END IF 
1290 IF S$&N$==t$&a THEN wx: iX: xp: ELSE : 
INK 0: AT 3,33: PRINT "to ";: INK 2: PRINT 
S?,*N?; "_ " ; BLANK? 
1300 rx2: k.3 : pk 

1310 IF k=-14 THEN wx: GO TO 1300 
1320 IF k<c THEN CLS#0 
1330 WHEN ERRor 
13 40 ERmsg: GO TO 12 40 
1350 END WHEN 
1.360 DEL: COPY t$&aS" 



'&Z$(j+k) TO 



S?&N$&"_"&Z$ (j+k) : rz: GO TO 1240 
1370 END DEFine xp 
1380 : 

1390 DEFine PROCedure df: pn=2 : hCR=0: 
CLSc : T: AT 0,14: PRINT" { } de-FILE " 
1400 mCR=7: PAPER pn: INK 0: AT 3,1: 
PRINT "de-FILE"; TO 59; BLANK? : sw: Rx 
1410 k3: pk 

1420 IF k— 14 THEN wx: GO TO 1410 

1430 CLS#Q: mCR=0: Rx: INK 5: AT 3,1: PRINT 

"de-FILE" : INK 7: AT 3,14: PRINT Z$ (j+k) / : 

INKS: PRINT " (y/n) ?" ,* BLANK? : yeano 

1440 IF k<c THEN CLSd: DELETE 

t$&a&"_ "&.Z$ (j+k) 

1450 sx: IF c-l=76* (pj 1) THEN mCR=7 : INK 
0: LET pj=l: j=l: sw: END IF : CLSe: GO TO 
1400 

14 60 END DEFine df 
1470 : 

1480 DEFine PROCedure hd: h.CR=0: mCR=2. : 
pn=7: CLSc : T: AT 0,28: PRINT" { } ";D$;" 
COPY ": PAPER '7: INK 0: AT 
3,3: PRINT" PRINT" : sw: Rx 



5: AT 0,28: PRINT" { 



} ";D* 



14 90 STR. 
COPY " 

1500 PAPER 7: CLSd: k3 : pk 

1510 IF k=-14 AND D?="serl" THEN D$="ser2": 
GO TO 14 90 

1520 IF k=-14 AND D$-"ser2" THEN D$="serl": 
GO TO 14 90 

1530 CLS#0: INK#2,2: AT#2,24,30: 
PRINT #2, "printer ready ... (y/n)?": AT 
3,14: INK 2: PRINT Z? (k+j ) ; BLANK? : yeano: 
CLSd: 

IF ok=0 THEN sw: GO TO 1500 

1540 IF k<c THEN cop=l: L2: END IF 

1550 CLOSE#7: CLSd: sw: Rx: GO TO 1500 

15 60 END DEFine hd 
1570 : 

1580 DEFine PROCedure rf: hCR~5 : mCR=5 : 
pn.=0: CLSc : T: AT 3,2: PAPER 0: INK 7: 
PRINT "FORMAT ";: INK 2: PRINT t$;a;"_": sw: 
Rx : rf 2 

1590 END DEFine rf 
1600 : 

1610 DEFine PROCedure rf'2 

1620 PAPER 7: AT 0,0: PRINT TO 45; : PAPER 

5 : INK 0 : PRINT " { } FORMAT " ; : PAPER 7 : 

PRINT BLANK? ; BLANK? (1 TO 6): CLS#0 

1630 WINDOW#0, 124, 132, 297, 14 : PAPER#0, 7 : 

BORDER #0,1,0: INK# 0 , 0 : C L S # 0 

1640 AT#0,0,0: STRIP#0, 7: INK#0, 0 

1650 AT#0,2,2: PRINT #0, "flpl_ == [F.1J " 

1660 AT#0, 4, 2: PRINT #0, "flp2_. = [12] " 



ZXir QLrvc Alive! 



24 



Spring 1997 



1670 AT#G, 6, 2: PRINT #0, "mdvl_ == [F3] " 
1680 AT#0,8,2: PRINT #0, "mdv2_ = [F4] " 
1690 AT#0, 10, 2: INK#0,0: PRINT #0, "OTHER = 

[F5] " 

1700 AT#0, 12,0: STRIP#0, 5: PRINT #0, TO 4; 

"Use CAUTION! STRIP#0, 7: INK#0, 0 

1710 key 3 
1720 SELect ON ke 
1730 =81,81+32: GO TO 140 
1740 =27: CLS: BEEP 900,20: rf2 
1750 =232: drive?="f lp" : num$="l": L=2:fmat 
1760 =236: drive?="f lp" : num?="2": L=4:fmat 
1770 =240: drive ?= B mdv" : num$="l": L=6: fmat 
1780 =244: drive ?="mdv " : num?="2": L=8 : fmat 

17 90 =2 48: L=10: other 
.1800 END SELect. 

1810 END DEFine rf2 
1820 : 

1830 DEFine PROCedure other 

18 40 AT#0,L,2: PRINT #0, " " ; CHR$ ( 188 ) ; " 
[drive] " ; BLANK? 

1850 AT#0, L, 2 : INPUT #0, drive? : IF 

LEN (drive?) <>3 THEN GO TO 18 40 

1860 IF drive$=="mdv™ OR drive $=="flp" OR 

drive$==" ram" THEN GO TO 1870: ELSE GO TO 

18 4 0 

18 70 AT # 0 , L , 2 : PRINT #0,drive?&" 

" & C.HR $ { 1 8 8 ) ; B LANK $ : AT # 0 , L , 5 : 

INPUT # 0 , num$ : IF LEN ( num? ) > 1 OR 

CODE (num? ) >=58 OR CODE (num? )<= 4 7 THEN GO TO 

18 70 

1880 fmat 

1890 END DEFine other 
1.900 : 

1910 DEFine PROCedure fmat 

1920 STRIP#0, 2 : INK#0, 7: AT#0, L, 0: 

PRI NT # 0 , " " ; d r i ve $ & num? & " 

";CHR? (188) ;" ": 

AT #0, L, 7 : INPUT#0, 1 abel $ 

1930 IF drive$=="ram" THEN FOR LNn=l TO 

LEN (label?) : IF CODE (label? (LNn) ) >=58 OR 

CODE (label? (LNn) } <=47 THEN GO TO 1.920: NEXT 

LNn: END FOR LNn 

1940 IF L EN ( 1 ab el ? ) > 1 0 TH EN BEEF 2 0 0 0 , 2 0 : 
AT#0, L+1,0: STRIP#0,7: PRINT #0, BLANK? : IF 
L=10: END IF : rf'2 
1950 WHEN ERRor 

1960 ERmsg : AT #2, 2 4, 35 : PRINT #2 , " f o rrnat 
failed" : GO TO 1990 
1970 END WHEN 

1980 FORMAT drive?&num?& "_"&labei ? 
1990 WINDCW#0, 413, 10,50,241: PAPER#0, 7 
2000 PAUSE 20: CLSc: sw: Rx: rf2 
2010 END DEFine fmat 
2020 : 

2030 DEFine PROCedure key3 
2040 REPeat key 
2050 ke=CODE ( INKEY $ ) 

2060 IF ke=81 OR ke=81+32 OR ke=232 OR 
ke=23 6 OR ke=240 OR ke =2 4 4 OR ke=248 THEN 
EXIT key 

2070 IF ke<23 6 AND k.e > 27 THEN BEEP 
900,40: key 3 

2080 IF ke=27 THEN PAPER 7: CLS: BEEP 
900,20: STRIP 7: nd 
2090 END REPeat key 
2100 END DEFine key 3 
2110 : 

2120 DEFine PROCedure Ik: hCR=0 : mCR=2 : 
pn=7 

2130 CLSc : T: AT 0,58: PRINT" { } pre- 



VIEW" : BLOCK 2 6, 10, 432, 0, 5 : PAPER 7 : AT 
3,1: INK 0: PRINT "pre VIEW " ; sw: Rx 
2140 k3: pk 

2150 IF k=-14 THEN wx: GO TO 2140 
2160 CLS: PAPER 7: BLOCK 458,12, 0,0,7: 
CLSc : 

BLOCK 458, 1,0,235,5: AT 0,37: INK 2: PRINT 
Z?(j+k): INK 0: BLOCK 458,1,0,10,5 
2170 IF k<c THEN AT 0,23: PRINT "pre- 
VlEWing: " : cop=0: L2 

2180 B5: WINDOW 462,250,25,3: PC: BORDER 
1,5: CLSd: GO TO 2 1 3 0 
2190 END DEFine Ik 
2200 : 

2210 DEFine PROCedure L2 : IF cop=0 : WINDOW 

448,214,33,22: INK 0: CLS: esc: END IF 

2220 IF cop=l: OPEN_NEW#7 , D? : END IF 

2230 OPEN#6, t $&a&"_""&Z$ (j+k) : esc 

2240 IF EOF (#6) THEN IF cop=l: 

PRINT #7 , BLANK? : END IF : GO TO 2300: END IF 

2250 LET i?=INKEY? 

2260 IF i?=CHR?(27) THEN CLSd: AT#2,24,36: 

PRINT #2, "abort? (y/n) " : yeano: IF ok=l 

THEN GO TO 2 300: ELSE esc: IF cop=0: GO TO 

2240: END IF : IF cop=l : PRINT #7, BLANK? : GO 

TO 1550: END IF 

2270 LET i ?=INKEY ? ( #6 ) 

2280 IF cop=0 THEN L3: GO TO 22 40 

2290 IF cop=l THEN L4 : GO TO 22 4 0 

2300 CLOSE#6: IF cop=0: GO TO 2190: END IF 

: IF cop=l THEN GO TO 1550: END IF 

2310 END DEFine L2 

2320 : 

2330 DEFine PROCedure L3 :MD$=S? ( j+k) 
2340 REPeat here 

2350 IF LEN(MD?}<=3 THEN IF CODE(i?)>126 OR 
CODE(.i?)<32: INK 5: ELSE : INK 0: END IF : 
EXIT here 

2360 IF MD? ( LEN (MD? ) ~3 TO LEN(MD?))==" doc" 
AND LEN (MD? ) >3 AND MD? (LEN (MD?) -3 TO 
LEN (MD?) )="_doc" THEN IF CODE(i?)=0 THEN 
PRINT: END IF : IF CODE ( i ? ) =8 THEN PC: 
rCLS: CLOSE#7: Ik 

2370 IF CODE(i?)>126 OR CODE ( i? ) <32 : INK 5: 

ELSE : INK 0: END IF : EXIT here 

2380 END REPeat here 

2390 PRINT i$; 

2 400 END DEFine L3 

2410 : 

2420 DEFine PROCedure L4 :MD$=Z $ ( j +k) 
2 430 REPeat hier 

24 40 IF LEN (MD?)<=3 THEN IF CODE ( i $ ) >12 6 OR 
CODE(i?)<32: i?=" ": END IF : EXIT hier 
2450 IF LEN(MD?)>3 AND MD? (LEN (MD? ) -3 TO 
LEN (MD? ) )=="_doc" THEN IF CODE(i?)=0 THEN 
PRINT #7 , CHR? ( 1 3 ) : END I F : I F CODE ( i ? ) =8 
THEN PRINT #7, CHR? (12) : hd: END IF 
2460 IF CODE(i?)>126 OR CODE(i?)<32: i?=" 
": END IF : EXIT hier 
2470 END REPeat hier 
2 480 PRINT#7,i?; 
24 90 END DEFine L4 
2500 : 

2510 DEFine PROCedure Ine: 
BLOCK#2, 458, 1, 24, 2, 0: 

BLOCK 458,1,0,10,0: END DEFine 
2520 DEFine PROCedure nd: PAPER 7: lne: 
tre=l: WCh: END DEFine 
2530 DEFine PROCedure CL: BLOCK 
450,220,0, 11, 7: PAPER 7: INK 5: AT 0,64: 
PRINT CHR? (188);' shift TAB ? : AT 0,0: 



ZXir QLive Alive! 



25 



Spring 1997 



PRINT " TAB " ; CHR$ (139);: INK 0 : PRINT " 
SELECT _DEVICE EXECJH UTILITIES ";TO 57;" 
EXIT PAPER 5: INK 0; 

FREE— (PEEK_L (163856) -PEEK L ( 163852 ) -1024) : 
END DEFine 
2540 : 

2550 DEFine PROCedure K4 : PAPER 7: REPeat 
key 

25 60 ike=CODE ( INKEY$ ) 

2570 IF ike=9 OR ike=32 OR ike=252 OR 
ike=253 OR ike>47 AND 13ce<58 THEN EXIT key 
2580 IF ike>=58 AND ike<252 THEN K4 
25 90 END REPeat key: END DEFine K4 
2600 : 

2610 DEFine PROCedure Pick 

2620 IF ike=253 THEN PrvW 

2 630 IF ike=9 THEN NxtW 

2 640 IF ike=252 THEN B5: GO TO 3160 

2 650 END DEFine Pick 

2660 : 

2 670 DEFine PROCedure NxtW: tre=tre+l: IF 

tre=4 THEN tre=0 

2 680 WCh; END DEFine 

2690 DEFine PROCedure PrvW: tre=tre-l: IF 
tre<0 THEN tre=3 
2700 WCh: END DEFine 
2710 : 

2720 DEFine PROCedure WCh: lne: CL 
2730 IF tre=0 THEN cj 

27 40 IF tre=l THEN AT 0,22: PRINT" EXEC_W 

K4: Pick: mA 
2750 IF tre=2 THEN AT 0 f 30: PRINT" 
UTILITIES ": K4 : Pick: NUT 

2760 IF tre=3 THEN AT 0,57: PRINT" EXIT ": 
K4: Pick: GO TO 3160 
2770 END DEFine WCh 
2 780 : 

27 90 DEFine PROCedure c j : fen=0: RN$=" " : 

pn=7 : CLSe : BLOCK 90, 1 00, 42,2 1, 0 : BLOCK 

88,99,43,11,7: BLOCK 88, 10, 43, 100, 5 : AT 

0,7: PRINT" SELECT_DEVTCE " 

2800 PAPER 5: INK 0: AT 10,8: PRINT" [ 

" ; t$&a; " mode j " : AT 11, 7 : INK 7 : PAPER 0 : 

PRINT U$: PAPER 7 

2810 INK 0: BEEP 100,29: AT 2,9: PRINT* "F" 
- flpl_': AT 4,9: PRINT ' "R" = raml_ * : AT 
6,9: PRINT 5 "M" = mdvl_' : AT 8,9: PRINT' "O" 
= other' 



2820 s=CODE ( INKEY $ (-1) } 
2830 IF s=9 THEN CLS#0: BLOCK 
90,112,42,11,7: tre=l: WCh 
2840 IF s=27 THEN CLS#0: BLOCK 
90, 112 , 42 , 11, 7 : t re=3 : WCh 
2850 IF 3=253 THEN CLS#0: BLOCK 



90, 112, 42, 


1 1 


, 7 ■ 


f~ =sr '3 








2860 


IF s- 


-■10 


OR 


3=102 


THEN 


t$="flp" : 


ct — J, 


2870 


IF 5 = 


■■11 


OR 


s=103 


THEN 


t$="flp": 


a=2 


2880 


IF s= 


--11 


OR 


s=109 


THEN 


t$="mdv" : 


a=l 


2890 


IF S= 


■■78 


OR 


s=110 


THEN 


t$="mdv" : 


a=2 


2900 


IF S = 


•82 


OR 


s=1.14 


THEN 


t$="ram" : 


a=l 


2910 


IF s = 


:8 4 


OR 


s=116 


THEN 


t$="ram" : 


a=2 


2920 


IF s= 


87 


OR 


s=119 


THEN 


t$= w win" : 


a=l 


2 930 


IF s= 


•79 


OP. 


s=lll 


THEN 


WINDOW#0, 


90, 30, 


69, 84 


; w=C 




r=0: 


p=8 : 


Oth: 


W$=N$: t$ 


=o$ 



2940 WHEN ERRor 
2950 ERmsg: cj 
2 960 END WHEN 

2 970 WINDOWS 0, 4 13 , 10, 50, 2 4 1 : cD=0 : RN$=" " : 

sx: B5: nd: END DEFine 

2980 DEFine PROCedure Oth 

2990 PAPER#w,pn: AT#w, r, p : PRINT jfw, ' 

* ;CHR$ (188) ; '_ ' : AT#w, r,p: INPUT#w,o$: IF 

o$="" OR o$== w f" THEN o$="flp": END IF : IF 

o$=«r* THEN o$="ram": END IF : IF o$==V 

THEN o$="win": END IF : IF o$=="n" THEN 

o$="ndk n ; END IF : INK#w, 0 : AT#w, r, p: 

PRINT #w, o$i IF LEN(o$)<>3 THEN GO TO 2990: 

ELSE 

3000 AT#w, r, p+3 : PRINT #w, " " : AT#w, r, p+3: 
INPUT #w, N$ : IF LEN(N$)=0 THEN GO TO 3000: 
END IF 

3010 IF CODE(N$J<58 AND CODE{N$)>4 7 THEN GO 
TO 3020: ELSE GO TO 3000 
3020 a=N$: END DEFine 
3030 : 

3040 DEFine PROCedure NUT: pn=5 : T: BLOCK. 

458,1,0,10,7: PAPER 7 : REPeat k2 

3050 k=CODE (INKEY?) : SELect ON k 

3060 =9: CLS: BORDER 1,7: tre=3: WCh: =253: 

CLS: BORDER 1,7: tre=2: WCh 

3070 =27: CLS: nd: -128: cj : =-232: xp : 

=236: df: =240: hd: =244: rf: =248: Ik 

3080 END SELect : END REPeat k2 : END DEFine 

3090 : 

3100 CLS#2: AT#2,24,31: PRINT #2, " @ 
PLATYPUS Software " 



daisy Be Good Part 



OK, guys, let's start wrapping up the main commentary 
on Bill Jones' suite of word Processors, that goes by the name 
of DAISY, by discussing typewriter mode. 

In doing so, we will bounce around some of Bill's 
fabulous internal menus, and finish the FUNCTION menu, all 
except for the last item, which is the "Style Menu".... That one 
deserves its own, separate treatment! 

We begin, by loading the autostart file on the disk, 
"Daisy #1" from Frank Davis and update ! Magazine. Initialize 
the Printer with presses of 3, 2, 1, Y, Y and Y, and get the 
function menu on screen. 

Typewriter mode uses entries 1, 2, 3, 6 7 8, 9, 0, and ; to 
print a page paragraph by paragraph, in "hear real time", 
and this is used for both reports and letters. For example, we 
set up paragraphs of text, by choosing option #1 at the 
function menu. We Press 2, in order to print Header, and 
the screen then asks us to type the caption, of length limited 



by David Lassov 



by 80 characters. We do so; we press ENTER; and, we get our 
line of type, in the current print style of the printer. 

We can get the Format Menu, by pressing 3 at. the 
function menu. The Format Menu allows US to access the 
Print Style Menu, by pressing 3, and also allows us to skip the 
letterhead, in the case of typing with paper having a fancy 
letterhead, or something like that, by toggling 8. 

We Print Typing, by pressing 6 at the function menu. 
This enables us to print "u$", which is a buffer of text set up by 
the powerful Input-Edit facilities of Daisy at entry #1 on the 
function menu, the Daisy db manager at the quickie menu. 

In typewriter mode, we use Office Tools at entry #8 of 
the function menu, only to access Page Management, as #8, 
again. With Page Management, we have the current page 
number and lines, remaining to page end. We can force, page 
end, by selecting #1, here. The printer ends the current page, 
by performing line feeds, till it gets to the bottom of the 



ZXir QLive Alive! 



26 



Spring 1997 



# 
* 



* 

* 



* 



£13 

can 

C4..1 

C63 
C«3 

CR1 
CB3 



page, where it types the current page number, before continuing 
on to the next page, Should the paper be moved up or down in 
the printer carriage, we can reflect this in Daisy, by adjusting 
the number of lines to page end and pressing #2. The current 
page number can be changed, by pressing; #3. And #4 
escapes back to the function menu. 

At the FM, #9 causes the printer to skip a line, while 
updating the line count, as shown onscreen, #0 at. the FM is 
supposed to Print out the built-in letterhead and an optional 
address for letters, which is entered on-line. None of the issue 
disks from update Mag. had this feature implemented. 
However, see the following article 
on my new and improved version! 

At the FM of Bill's original 
version, we Sign Off, by pressing 
the colon symbol, : . The printer 
springs to life, by feeding a couple 
of lines, before printing 
"Sincerely," and "Bill Jones", after 
two more line feeds! Lastly, it 
skips down to page bottom, types 
the current page number, and 
continues on to the next page. 

Next time, we talk about the 
last entry, <, on the function 
menu. This calls up the all-important Style Menu, where we 
P™^ S^^h. t? r use_by our printer. _ 

Well, guys, we load ramdisk with all the daisy menus, 
and then load the autostart file of our new and improved 
daisy disk. This brings up a main menu of compatible word 
processors, which we have broken out and optimized from Bill 
Jones' Daisy suite. 

Let's punch 3, and load dbms.B6. Everything we try for 
typewriter mode results in a beep, only. This is because 
"dbms" serves only as a gateway to further Data Base 
Management Systems, which are also 
part of Bill's amazing daisy suite! 

Hmm we punch 2 at the 

main menu, and load 1N+ED.B6 ... 
. Now, when we punch 1 at the 

FUNCTION MENU, the QUICKIE MENU 

comes right up, ready to build a 
paragraph of text, contained in u$. 
When we escape back to trie FM, we 
only get beep, upon pressing 2, 3, or 
6. In other words, we can't Print a 
Header, access the Format Menu, or 
Print the Typing, Contained in u$, 
since IN+ED.B6 doesn't have any 
printer drivers. Likewise, we only get beeps, by selecting 
Page Management, Line Space, Letterhead, Sign Off, Page End, 
and Style Menu. 

Now, if we punch I at tire main menu, and load 
PO+MM.B6, our banner charges right up, asking that we 
initialize the printers. 3, 2, 1, y, y, and y result in daisy's 
FUNCTION menu. But, upon pressing 1, we only get a BEEP, 
since PO-HVfM has no input facilities. However, we can Print a 
Header at 2. since the caption is input, on-line. Only 40 
characters, since we use enlarged and emphasized print 
for captions in PQ+MM. 

When we punch 3 at the FM, we go straight to the 
format menu, where we can allow for letterhead stationary 
<8> or access trie Print Style Menu <3> . . 

Now, when we punch 6 at the function menu, we get a 
beep. However, let us break and set 

uS= "This is a TEST!!!!" 



OFFICE TOOLS 

tu r bo ange 
LORD COd« Ofc M9' 
Ldad DbiSt-1 
Daisy Wo 9*coc* 



Use DbX (MAi L HtfSt) 

To Fundi on M*nu 
pa<9c M*n*s*m*r>t 

R* -i n i X i * i i *« Of i „ 
crista /?f t out Lin* £>B 
DiSlt MS t TOO I* 
LO«D U^&frt*SS P«m 



- lnd4P*nt«nt Pro9f»m 




Pi cs 

ma x 
L i n« 
85 <3 



Line 



Then, when we goto FM, and punch 6 at the FM, the 
printer flies into action and prints our typing with the current 
print style, all nicely indented or not, according to our last 
specification when initializing the printers. 

We can touch 8 at the FM and 8 at the office menu, 
which brings up page management. Here, we can re- 
number the current page, or we can also FORCE the end of a 
page, by either skipping lines down to the bottom OR 
changing the number of lines to page end, where we type the 
current page number and continue on to the next page. 

A touch of 9 at the FM causes the printer to feed a line, 

whereas a touch of 0 prints out 
OUR current letterhead, with or 
without an (optional) addressee 
block.. The print chain used is 
pica. 

Let us press #0 at the 
function menu. We are 
immediately asked whether we want 
it with or without addressee. The 
addressee option also lists the 
current time, date, etc., from our 
Dallas Smartwatch below our 
telephone numbers! 

both Sign Off and Page End 
work the same as in the original version of daisy by Bill Jones. 

Now, ManlAd has practically every feature of Daisy, 
jammed into its BASIC code, While this leaves little room, in 
which to maneuver, we can easily handle typewriter mode, as 
all inputting is done on-line! 

So, let us punch 0 at the main menu and load 
ManJAd.B6. Our banner charges up, we iniiiahze the printers; 
and, the function menu comes onto the screen. 

By punching 1 at the FM, we can use the QUICKIE menu, 
to construct a text file uS, containing a paragraph of 

information. Back at the FM, we 
touch 6, in order that the printer 
immediately list uS on the page of 
typing, using the current print style. 

By pmiching 2 at the FM, we 
input a caption for immediate 
printout, centered on the page, 
enlarged and emphasized. 

We get the format menu with 
a punch of 3 at the FM. This 
accesses the Print Style Menu with 
another punch of 3 . This also allows 
for the presence of letterhead 
stationary <8>. 
As above, 6 causes the printer to put out whatever is 
currently in ir$. 

We can punch 8 at the FM and 8 at the office menu, 
thus getting to page management, where everything works 
as above with PO+MM. In fact, everything works for 
typewriter mode in ManlAd, the same as in PO+MM with 
the addition of #1, the aU-important ability to create uS. 

So, if we can ever get some more memory, through bank 
switching or something, then we can expand ManlAd even 
more, to include any remaining few capabilities of Bill Jones' 
Daisy suite of word processors. 

As it. is, ManlAd is as good as Bill's software for 
typewriter mode. In fact, it is better, as we don't have to wait 
for any menus to load or subroutines to merge. Anyway, 
next issue's discussion of the Style Menu, should terminate our 
consideration of daisy. 



L.9 th*86 

f*^4& 33 & 9* 
T*b mXt 



ZXir Olive Alive! 



IT 



Spring 1997 



ZX-81 Video Oispiiay 3y3terti - part 2 by win Rigter zx-team magazin 



7 Pseudo Hires Video Harware 

The pseudo hires graphics video display generator consists 
of the ZSO CPU, ROM, RAM and a large part of trie ZX-81 
Sinclair logic chip (ULA) as shown in Fig, 2 with all relevant 
connections including the isolation resistors.. For simplicity, only 
the 2K RAM version is shown, 

ULA ROM no 2K RAM 

VIQ&CK-! VSH11BSG <-DATM~~ /(RMH i IOATA t —R—IDATA I 

i *iJMEOS ->A$~2l -IAQ-2 }—M~-j&<)~2 f~ I AOS ! 

i omutca ~>A3~$!- iJU-B }~~&~m-8 / M3-9 ? 

I ! /A3--12/- — U9~13f 

i BCWCSf /CS I I "1ST? IAS t 

f t l i ; i i / 

i mscsi — - i / m/osi 

t AUf -—--/AH / L™ / 

/ J«5? — IA2S I 

i m .j~.-~~ — » — / «R j 

i jRiPf — s — im i 

s Mil mi i 

i msQh — -r-imEQ i 

i — nam ? 

j mxt — < — } mi i 

i BAIT I - - — 1 SALT I 

I . i L ./ 

Fig. 3 Pseudo Hires Graphics Display Crcuit 
The only difference between pseudo hires and Sinclair 
character hardware is the ULA LCNTR and the use of the INT 
input. Most, pseudo hires core routines do not use INT and the 
ULA LCNTR is reset to zero every horizontal hue The 
exception is Xtricator which uses INT and makes dual use of the 
I register in INT mode 2 as part of the RST vector address when 
interrupted at the end of each horizontal line and at refresh time 
as a ROM pattern table pointer. 
8. True Hires Video Hardware 

The portion of the ZX81 hardware required for true hires 
graphics display consists of ZSO CPU, the RAM, the video shift, 
register and the sync circuit of the ULA as ho wn in Fig. 4 with 
all relevant connections. Again the 2K SRAM is shown for 
simplicity but applies to larger SRAM designs as well. If a 16K 
RAMPACK is used, it must be slightly modified, as will be 
shown later, to enable the data output during RFSH time as 
required for this hires display method. 

V « A ROM ZSO ZX RAff 

vmm<-i vsnnssG odamj idata / — idata t — s— i data / 

I ! }A0~l3l )M"l5i~- t&Q-lQt 

I XOMCSh- ~iCB I ) I j j 

> ' / - / 1 f > / 

i jwKXf -~ i - f - fcs/oet 

I A14f -UU4 } JU / 

* M5> > - -IMS i 

t im i 

j mf m j 

i mi-—- jmj I 

i HRECti — -- am® i 

} ZOBQI jiaXQ / 

i . mil ~— — —ima i 

I BAIT) ~ ~t8AlT I 

I J . L / 

FHS S TRUE HiRES GRAPHICS VSOE0 DISPLAY CIRCUIT 

■ With frw esoo&piion of WRX1K whkih creaias a nMmm hirss screen onalK ZX81 

■ m Hm programs nml 0 m fsm graphfes fife (HFILE). S^tabis Him for Urn hires 
graphics can be ir^tiinsj^l % moeSfying a standard tfiK R^^so< wfh a coi»te 
at ^Kl^ «ni a rector. 

The RAMPAK is modified to enable the data output at RFSH 

time by cutting the RD and RFSH lines at. the edge connector and 

installing only two germanium diodes and a 4.7K pull-up 

resistor. 



ZXir QLive Alive! 28 



+57 

I 

? 

IH34& 

FIG 5 RA^AOCSWDfflCATiOM FOR TRUE HIRES 

Afi «» Ssrjclair 2X81 character a&ptey rwfeare ^Siewn in FIG 2 is rsqufrsci so 
gaierals a siandafd scre^t 0$ 24 %(m 32 character* Tt» chgracter display starts 
wh«t 8W last War* line st ihe top of Jha screen has occurred and ami She video 
toutfrta jumps to the OfiLE ebovs 32K. Ths hardvws if! »hs 2X81 UlA takss 
«of*c>l vtoi any opcod® is ®xs«uied abov« 32K (ASS high ar«3 tow) wilh <JsSa fert 
6 aquss to asro The vidsc dsta is Ses^Jed in ihsss simplified steps; 

1 . Th* UlA loads S» cnaracSer coda into * address regisisr in tie UlA 

2. Th« ULA faces the date lfe»* low. 

3. The CPU ini-arpwls she by Is as a MOP . 

4. The ULA generate* part of *» RC^I pattern teWe adctess and tie ZSO CPU 
fsn^st©? Ste ^sltem t^3ls pointer %-iti She i regisisr. 

5. The pattern byte is leaded into tbe OLA siirft rsQisiw, 

One ooald «ay Ihst tha 0»» i« Hwt^y awtaied wth §«S3ti%ife4 fer m^i 
character Each KiOP «©ai@s m 4 CPU ctodc cyctea at 3..2S Mfe or S pfasete 
^ t SMBte fern tn UlA vicfeo si* filter. 

«— -cwM»cm a — ■ — — »<- -csajwctss 3— - — » 

y 3»«s <--«--><— 1»-^->* ~w-*« r*—>*~ n—x— x3—><—«—> 

— _ i_^jr 5 

smaaas 1 U-i *. } s 1 x„i 

mt „„ «w» - 

R6 S 2X81 CHARACTER DiSPUY TSMiNG 

1. Each character code (CHRS) byte in DFILE is addressed by 
the CPU PC, on the rising edge T2 data is loaded from DFILE 
into the ULA : bits 0-5 into a 6 bit ULA address latch while bit 7 
is loaded into 1 bit ULA video invert latch 

2. On the falling edge of T2, the ULA forces all CPU data hues 
to zero. 

3. On the rising edge of T3 the low data lines are interpreted by 
the CPU as a NOP instruction. 

4. During T3/4, the CPU executes the cycle and ROM address 
lines are generated with 1 register on A9-A15, the ULA 6 bit 
character code register on A3-A8, and the ULA modulo 8 hue 
counter on line A0-A2, 5. 

5. On the failing edge of 74, pattern data from the ROM is 
loaded into ULA video shift register and 8 video pixels are 
shifted out at 6.5MHz. 

6. If character code bit 7 latch in ULA equals L video pixels are 
inverted. 

7. The CPU increments the program counter and fetches the next 
character code. 

8. This repeats until a HALT (Sinclair) is fetched. 

9. HALT opcode bit 6=1 and is therefore executed (no NOP). 

1 0. The ULA. generates a HSYNC pulse independend of the 
CPU timing and the ULA LCNTR is incremented. 

11. The halted CPU continues to execute NOPs, incrementing 
register R and samples the INT input on the rising edge of each 
T4. 

12. "When A6, which is hardwired to INT, goes low during 
refresh time, (bit 6 of the R reg = 0), the ZSO executes fee INT 
routine (below 32K) 

13. CPU returns from INT and resumes "excution" of DFILE 
CHRS codes. 

14. The process repeats 192 times and then INT routine returns 
to the main video routine, turns on die NMI generator and 
switc hes back to the ap plication code. 

Spring 1997 




in response to Don's request on page 6 ofZXir QLive 
to unscramble the schematic in the final issue of UPDATE! 
magazine. I had already done that - it was a challenge and 
J recognized the problem. Attached is the unscrabled 
version.. The problem is one of proportional versus non- 
proportional fonts . 

For example from page 6; 
Courier font (non-proportional) 



Compatible Serial I/F by WiltRigter 



Helvetica font (porporrional) - figure above copied and 
then font changed. 



j 317 



+ 



4- 



| Vin Voutj 

I i i 
! I 



i 



317 



Vin 



Vou t 



-Adj.. 



i 



[330] 



[330] 



i verified the pinout of the 8251 and corrected pin 24 
callouttoDTR. 

Les Cottrel 



TS2050 MODEM COMPATIBLE SERIAL l/F 



+5 



A5 
A6 
A7 
A3 
iORQ 
M1 



74HC138 



-1 
-2 
-3 
-4 
'5 
-6 



A 


vcc 


B 


Y3 


C 




E 




E 




E 





8 

OV 



16 
12 



DO- 
D1- 
D2- 
D3- 
D4- 



RD 
WR 

A2 
CLK 



-1" 

—27 

— -28 
— _ 1 

2 

. 5 

D5~ 8 

D6 7 

D7— - — 8 

13 

10 

12 

. 20 



RESET 



1 




74HC14 



5V 

OV 



16 
' 3 



12 
10 



Q4 

74HC4060 
RST QSI14 



H 10M 



33 



ov 



XTAL 



33 



7 -\ 

J Si 



■25 
- 9 



11 



4.912 MHz 



CS 

DO 

D1 

D2 

D3 

D4 

D5 

D6 

D7 

RD 

WR 

C/D 

CLK 

RST 



RXC 
TXC 



VCC 



TXD 



RXD 



26- 



19 



10 > 



14 
9 



DTR 



74HC14 
~ 5< N 6 



24 not used 



RTS 23 



CTS 

ezs\ 

VSS 



S1 for BAUD rate selection 
Q4=9800/1200 Q8= 1200/300 

"untangled" page 21 of final Issue 
of Update! magazine 



DSRI22 



17- 



74HC14 
■13< i2 



A 



74HC14 
•11<J10- 

7 



ZXir OLivs Alive! 



OV 



10 uF 



DB25 



0V 



100 



10K 



} 



100 J- 



10K 



1M 



DB9 
TX 

2 



RX 



3 



GND 
7 5 



RTS 

7 



CTS 
8 



0V 



10K 



DSR 



1M 



0 V 



29 



Spring 1997 




JLi 2.09 - Part 2 



1700 Find$="NULL" 
1710 Search 
1720 END DEFine 
1730 : 

1740 DEFine PROCedure label 
1750 bop; AT 24,12; INK 2; 

INPUT " printer ready (y/n) ? 

";a$ 

1760 IF a$=="y" THEN GO TO 1780 
1770 IF a$=="n" OR a$<>"Y" OR 
a$<>"y" 

THEN Show_DIF 
1780 DELETE RAMl_label DIF 
1790 OPEN_NEW#5,RAMl label_DIF 
1300 Record$ »Z$ (n+1) 
1810 FOR r=Q TO LEN f RecordS } 
1820 IF r— LEN (RecordS ) THEN PRINT#5 
1830 PRINT#5, Records (r+1) ; 
184 0 NEXT r: END FOR r 
1850 CLOSE#5 
1860 la=14: exp to_txt 
1870 END DEFine" 

1.890 DEFine PROCedure QKp_t.o_t.Kt 
1900 DELETE rami Recordjtxt 
1910 OPEN NEW* 5, rami Record _txt 
1920 FOR n-la TO LEN (Record?) 
1930 IF Record$ (n)«CHR$ (34) THEN 
NEXT n 

1940 IF Records (n)=CHR$ (44) THEN 
bop: PRI.NT#5: 
END IF 

19S0 IF Record$ (n)OCHR$ (44) 
THEN PRINT#5, RecordS (n) ; 

1960 NEXT n 

1970 END FOR n 

1980 CLOSE#5 

1990 DIM T$ (16,96) 

2000 OPEN IN#5,raml Record_txt 

2010 FOR e=0 TO 14 

2020 IF EOF (#5) THEN EXIT e 

2030 INPUT#5,T$ (e) 

2040 END FOR e: CLOSE#5: e=e-l 

2050 OPEN#4,serl 

2060 s=4 

: REMark for onscreen test »> 

3=2 

2070 key $=T$ (0) 

2080 sl_$=T$ (1) 

2090 s2~$=T$ (2) 

2100 s3~$-T$ (3) 

2110 s4_$-T$ (4) 

2120 s5_$=T$ (5) 

2130 s6 $=T$ (6) 

2140 s7_]$=T$ (7) 

2150 s8_$=T$ (8) 

2160 s9_$=T$ (9) 

2170 slO $=T$(1Q) 

2180 offset$=Blank$ (1 TO marginS) 

2190 IF LEN(s2_$)=0 THEN 

PRINTls, off set? & sl_$ 

2200 IF LEN(s2_$)>»l " 

THEN PRINT#s, offsets S s2_$;" 
"?sl_$ 

2210 PRINTS s, offsets & s3_$ 
2220 IF LEN(S4_$)=0 THEN GO TO 
2230: 

ELSE PRINT#s, of f set$ & s4 $ 
2230 PRINT#3, of f set$ & s5 



";s6 



s7 $ 



2240 Adj us t_ Printer 
2250 CLOSE! 4 
2260 n=lstnm 
2270 ShowJDIF 
2280 END DEFine 

2300 DEFine PROCedure Set_Printer 
2310 DELETE DviceS & "LineF eed" 



2320 OPEN_NEW#5, Dvice$ & 
"L.ineF_aed" 

2330 BLOCK 260,14.45,167,0: STRIP 
0: INK 5: 

AT 17,15: PRINT CHR$(188)f 

" Line Feeds between labels": 
AT 17,11: 

INPUT LnFdS 
2340 IF LEN (LnFdS) =0 THEN 
LnFd$="0": END IF : 

FOR h=l TO LEN (LnFdS); IF 
LnFdS (h)>CHR$ (57) 

OR LnFdS (h) <CHR$ (48) THEN bop; 
LnFd$="Q" : 

END IF : NEXT h: END FOR h 
2350 PRINTI5, LnFdS 

2360 BLOCK 260, 14 , 45, 167, 0: STRIP 
0: INK 5: 

AT 17,15: PRINT CHR$ ( 188 ) ; " 
Margin Offset": 

AT 17,11: INPUT marginS 
2370 IF LEN (marginS) =0 THEN 
margin$="4": END IF : 

FOR h=l to LEN (marginS) : 

IF marginS (h) >CHR$ (57) or 
margin? (h)<CHB.$ (48) 

THEN bop: marginS-" 1" : END IF: 
NEXT hi 

END FOR h 
2380 PRINT #5, marginS 



!90 CLOSI 



END DEFine 



2410 DEFine PROCedure 
Adjust Printer: DIM T$ (2,3) 
2420 WHEN ERRor 
2430 LnFdS="3": margin$="4" 
2440 END WHEN 

2450 OPEN IN#5, DviceS & "LineF_eed r 

2460 FOR e=0 TO 1 

2470 IF EOF (#5) THEN EXIT e 

2480 INPUT#5,TS (e) 

24 90 END FOR e: CLOSE* 5: e=e-l 

2500 LET LnFd$=T$(0) 

2510 LET margin$-T$ (1) 

2520 LET offset=margin$ 

2530 FOR 2=1 TO LnFdS 

2540 PRINT #3 

2550 NEXT Z: END FOR Z 

2560 END DEFine 

2.580 DEFine PROCedure Search 

: REMark open File: CLOSE#5: 
CLOSE#6 

2590 DIM ZS (384,756) 

2600 OPEN IN#6, DviceS & Sname$ & 

EXTen$ 

2610 FOR c=0 TO 386 

2620 IF EOF (#6) THEN EXIT c 

2630 WHEN ERRor 

2640 CONTINUE 

2650 END WHEN 

2660 INPUT#6,Z$ (c) 

2670 END FOR c: CLOSES 6 

2680 c-c-2 

2690 rn=0: n=0 

2700 sedit: labels: Show_DIF 
2710 END DEFine 

2730 DEFine PROCedure show date 
2740 AT 2,10 

2750 FOR r=l TO LEN (Records ) 
2760 IF Records (2) =CHR$ (34) THEN 
rr=r+l 

2770 show_rest 
2780 END DEFine 

2800 DEFine PROCedure show_key 
2810 AT 2,40 

2820 FOR r=rr TO LEN (Records ) 
2830 IF Records (r)=CHR$ (34) THEN 



2840 show_rest 
2850 END DEFine 

2870 DEFine PROCedure show_rest 
2880 FOR r=r TO LEN (RecordS) 
2890 IF Records (r)=CHR$ (34) THEN 
NEXT r 

2900 IF RecordS £r)=CHR$ (26) THEN GO 
TO 2970 

2910 IF RecordS (r)=CHR$ (44) AND 

RecordS (r-l)=CHR$ (34) THEN GO 
TO 2960 

2920 IF RecordS (r)=CHP,$ (4 4) AND 
Re co rd$ ( r - 1 ) < >CHR$ (34) THEN 

PRINT RecordS (r) ? : 
NEXT r 

2930 IF RecordS (r)=CHR$ (44) AND 

RecordS (r-1) <>CHR$ (32) THEN 
PRINT ; NEXT r 

2940 IF RecordS (r)OCHR$( 44) THEN 

PRINT RecordS (r);: NEXT r 
2950 END FOR r 
2960 PRINT 

BlankS? BlankS? BlankS; Blank$: rr=r+2 
2970 END DEFine 

2990 DEFine PROCedure show nums 
3000 STRIP 0: INK 7 
3010 y=2 

3020 WINDOW 130,12,106,170 
3030 FOR r-rn TO LEN (RecordS) 
3040 IF RecordS ( r) OCHRS (44 ) THEN 

PRINT RecordS (r) ; : NEXT r: END 

IF 

3050 IF y=2: WINDOW 130,12,105,180 
3060 IF y=3: WINDOW 130,12,105,190 
3070 IF y=4: WINDOW 130,12,356,170 
3080 IF y=5: WINDOW 130,12,356,180 
3090 IF y=6: WINDOW 130,1.2,356,190 
3100 IF RecordS (r)=CHR$ (44) THEN 
y=y+l: NEXT r: 

END IF 
3110 END FOR r 

3120 WINDOW 512,256,0,0: INK 0 
3130 END DEFine 

3150 DEFine PROCedure Show, DIF : 
y=0 ; 

REMark. CHR$ (34/44/32) = 
" , <space> 

3160 WINDOW 512,256,0,0 

3170 redit: stripe 

3180 AT 22,2: PRINT "Rec # : ";: 

INK 2: 

PRINT n?TO 22;: INK 0: PRINT 
"Find : ";: 

IF Find$-"NULL" THEN INK 7: 
ELSE INK 5: 

PRINT FindS 
3190 STRIP 0: INK 7: 
3200 AT 24,3: PRINT CHR$ (190) ; 
CHR$ (191) ; 

CHR$(188); CHR$(1.89);: INK 2; 

PRINT" 

[back/next/first/last] "; : 

INK 7: PRINT TO 42, "F" ? : INK 
5: PRINT"ind : 

INK 7: PRINT"M" ? : INK 5: 
PRINT"ore "/: INK 7: 

PRINT"R"; : INK 5; PRINT"ecord 
" ? : INK 7 : 

PRINT " P " ; : INK 5 : PRINT " ri nt 
s " ■ : INK 7 : 

PRINT"W";: INK 5: PPJNT"itch 
e"? : INK 7: 

PRINT"X";; INKS: PRINT"it" 
3210 Record$=Z$ (n+1) 
3220 STRIP 2: INK 7 



ZXir QLive Aiive! 



30 



Spring 1997 



3230 AT 1,2: PRIM" "Using : 
SnameS &. EXTen$ ? Blanks 
3240 AT 2,2; PRINT " Date : 

Blanks 
3250 show_date 
3260 AT 2,34: PRINT "Key : 
";Blank$ 

3270 WINDOW 260,10,240,20; PAPER 2 
CLS 

3280 rc-l 

3290 FOR r=rr TO CHR$(34) 

3300 STP.IP 0: INK 7 

3 3 10 IF Re co rd$ ( r ) =CHR$ (34) THEN 

NEXT r 

3320 IF Records (r)=CHRS (26) THEN 
r=r-l: END IF 

3330 IF Records (r)=CHR$ (32) AND 
Record$ ( r- 1 ) =CHR$ (4 4) THEN 
PRINT Records (r-1) ";: NEXT 

r 

3340 IF Records (r) <>CHR$ (44) AND 
P,ecord$ ( r-1) =CHR$ (44 ) AND 
Re cord$ ( r- 2 ) =CHR$ (34) THEN 

show_nums: 

' GO TO 3410 

3350 IF Records (r)==CHR$ (44) AND 
Record$ (r-1) <>CHR$ ( 34 ) THEN 

PRINT; : NEXT r 

3360 IF Record$ (r) ==CHR$ (44) THEN 

PRINT; NEXT r 

3370 PRINT Records (r); 

3380 NEXT r 

3390 END FOR r 

3400 WINDOW 512,256,0,0 

3410 Options 

3420 END DEFina ShowJDIF 

3440 DEFine PROCedure Options 

34 50 REPeat ops 

34 60 LET reed-CODE(INKEY$ (-1) ) 

34 70 IF reed=10 THEN Show DIF 

3480 IF reed-70 OR reed=102 THEN 

f i nd 

3490 IF reed=77 OR reed-109 THEN 
more 

3500 IF reed=8Q OR reed=112 THEN 
label 

3510 IF reed=82 OR reed=114 THEN 
Record 

3520 IF reed=87 OR reed-119 THEN 
sWatch 

3530 IF reed=88 OR reed-120 THEN 

PAPER 7: CLS; menu 

3540 IF reed=208 THEN up 

3550 IF reed-216 THEN down 

3560 IF reed-192 THEN first 

3570 IF reed=200 THEN last 

3580 END REPeat ops 

3590 Show_DIF 

3600 END DEFine Options 

3620 DEFine PROCedure up 

3630 IF n<=0 THEN first 

3640 FndBlnks n=n-l: lstnm=n: 

Show_DIF 

3650 END DEFine up 

3670 DEFine PROCedure down 

3680 n-n+1 

3690 IF n=c THEN first 

3700 FndBlnk; lstnm=n: Show_DIF 

3710 END DEFine down 

3730 DEFine PROCedure first 

3740 FndBlnk: n=0: Show_ DIF 

3750 END DEFine first 

3770 DEFine PROCedure last 

3780 n=c-l 

3790 IF n=c THEN first 

3800 FndBlnk: lstnm=n: Show_DIF 

3810 END DEFine last 

3830 DEFine PROCedure Record 

3940 »fc*\ipen AT 22,10» PRINT 
Blank$ (1 TO S) s 



AT 22,2: INPUT "Rec # : ";Rn: 
3850 IF Rn$="" THEN ShowJDIF 
3860 n=Rn$ 

3870 IF n>c THEN last 

3880 ShowJDIF 

3890 END DEFine Record 

3910 DEFine PROCedure find 

3920 POKE 163976, 0 

3930 stripe: FndBlnk: AT 22,22: 

INPUT 'Find : ' ; Find$ 
3940 IF Find$=="" THEN ShowJDIF 
3950 n— 1 
3960 more 

3970 END DEFine find 

3990 DEFine PROCedure more 

4000 IF Find$=="MJLL n OR Find$="" 

THEN ShowJDIF 

4010 AT 22,29: STRIP 7: INK 2: 

PRINT Find$ 

4020 cap$=Find$ (1) 

4030 IF CODE(cap$) >96 THEN bop: 

cap$=CHR$ (CODE (cap$) -32) 
404 0 FOR n=n+l TO c-1 
4050 Record$=Z$ (n+1) 
4060 AT 22,10: PAPER 7: INK 2: 

PRINT n;Blank$(l TO 4): PAPER 
0: INK 7 

4070 FOR fi=0 TO LEN (Records ) 
4080 IF cap$ORecord$ (fi+1) AND 

Fi nd$ ( 1 ) < > Re co rd$ ( f i + 1 ) THEN 
NEXT fi 

4090 IF Find$ (l)==Record$ (1+fi) 
THEN 

IF Find$— Records (1+fi TO 
LEN (Find$ ) \ fi) : 

lstnm=n: Show DIF 
4100 NEXT fi 
4110 END FOR fi 
4120 NEXT n 
41.30 END FOR n 

4140 n=c-l AND Find$OREC$ (1+fi TO 

LEN(Find$)+f.i) ; 

STRIP 7: bop; INK 2: AT 22,29: 
PRINT 1 no (more) match (es) 

found for " ' ; : 

INK 0: PRINT Find$?: INK 2: 

PRINT ' " ... » : 

bop: STRIP 0: INK 2: AT 24,10: 
PRINT" ";Press$;" ": PAUSE: 
BLOCK 300,10,168,220,7: 

FndBlnk: n=l.stnm: 
Show_DIF 

4150 END DEFine more 

4170 DEFine PROCedure menu 

; REMark program screen 

4180 fenetre=0: CLS: INK 0 

4190 Find$="NULL" 

4200 Cmd_L±ne: MoreFile: SelectFiie 
4210 END DEFine start 
4230 DEFine PROCedure Cmd_Line 

: REMark more program screen 
4240 PAPER 7: AT 1,7: stripe: 

PRINT" FILES I/O DEVICES "TO 
50? "EXIT " 

4250 BLOCK 512,1,0,9,2: BLOCK 
512,1,0,20,2 

4 260 INK 2; AT 1,58: PRINT ' @ 
PLATYPUS Software': 
INK 0 

4270 END DEFine Cmd_Line 

4290 DEFine PROCedure Keyl 

4300 REPeat KEYp 

4310 ke^CODE ( INKEYS ) 

4320 IF ke=9 OR ke=32 OR ke=27 OR 

ie=253 THEN bop: 

EXIT KEYp 
4330 IF ke=208 OR ke=216 THEN EXIT 
KEYp 

434 0 END PJEPoat KEYp 

4350 END DEFine Keyl 



4370 DEFine PROCedure Key 2 

4380 REPeat Qep 

4390 ke=CODE (INKEYS) 

4400 IF ke=7Q OR ke=71 OR ke=77 OR 

ke=78 THEN 

EXIT Qep 

4 410 IF ke-82 OR ke-84 OP. ke-87 OR 
ks=8 8 THEN 

EXIT Qep 

4420 IF ke=102 OR ke==103 OR ke-109 
OR ke=110 THEN 
EXIT Qep 

4430 IF ke-114 OR ke-116 OR ke=119 
OR ke=120 THEN 
EXIT Qep 

4440 IF ke=232 OR ke=236 OR k.e=240 
OP^ ke=248 THEN 
EXIT Qep 

4450 IF ke=250 OR ke=*253 OR ke-27 
OR ke=9 THEN 
EXIT Qep 

4460 IF ke<236 AND ke>=27 THEN bop: 
Key2 

4470 END REPeat Qep: END DEFine 
Key2 

4490 DEFine PROCedure Key3 

4500 REPeat QEYp 

4 510 ke-CODE ( INKEYS ) 

4 520 IF ke=234 OR ke=82 OR ke-114 

OR ke-115 

OR ke-83 THEN EXIT QEYp 
4530 IF ke=67 OR ke=68 OR ke=79 OR 
ke=86 OR ke=87 

THEN EXIT QEYp 
4540 IF ke=99 OR ke=100 OR ke-111 
OR ke=118 

OR ke-119 THEN EXIT QEYp 
4550 IF ke=232 OR ke-236 OR ke-238 
OR ke-240 

OR ke=248 OR ke=234 THEN EXIT 

QEYp 

4560 IF ke-242 OR ke=80 OR ke-112 
OR ke-246 

OR ke-121 OR ke-89 THEN EXIT 

QEYp 

4570 IF ke=25Q OR ke=253 OR ke=27 
OR ke=9 THEN 

EXIT QEYp 
4 580 IF ke<236 AND ke>=27 THEN bop: 
Key3 

4 590 END REPeat Q 

4600 END DEFine Key3 

4620 DEFine PROCedure PickOne 

: REMark TAB/shif t- TAB/ SPACE 
4630 IF ke - 250 THEN BEEP 900,20; 
menu 

4640 IF ke = 253 THEN BEEP 900,20: 
PrevWindow 

4650 IF ke = 9 THEN BEEP 200,10*. 
NextWindow 

4660 IF ke - 27 THEN BEEP 200,10: 
f enetre=4 : 

PrevWindow 
4670 END DEFine PickOne 
4 690 DEFine PROCedure NextWindow 

: REMark move to right 
4700 fenetre = fenetre+1; 

IF fenetre>2 THEN fenetre=0 
4710 WindowChoi.ce 
4720 END DEFine NextWindow 
4740 DEFine PROCedure PrevWindow 

: REMark move to left. 
4750 f enetre=f enetre-1 : IF 
fenetre<0 THEN fenetre=2 
4760 WindowChoice 
4 770 END DEFine PrevWindow 
4790 DEFine PROCedure WindowChoice 

: REMark branch to ... 

4QQO CLBoroon 

4810 IF fenetre = 0 THEN File 



ZXir QLive Alive! 



31 



Spring 1997 



4820 IF fenetre = 1 THEM devo 
4830 IF fenetre - 2 THEN out 
4840 END DEFine WindowChoice 
4860 DEFine PROCedure out 

: REM ark EXIT program 
4870 CmdJLine: AT 1,49: STRIP 2; 
INK 7: 

PRINT " EXIT "i stripe 
4880 JCeyl: PickOne 
4890 SELect ON ke 
4900 =32: GO TO 5980 
4910 END SELect 
4920 END DEFine 
4940 DEFine PROCedure devo 

: REMark select I/O device 
4950 CmdJLine: AT 1,14: STRIP 2: 
INK 7: 

PRINT" I/O DEVICES " 
4960 WINDOW#3,136,112,84,20 
4970 PAPER#3,7; BORDER* 3, 1, 2; 
INK#3,5: CLS#3 

4980 BLOCK 7,112,220,21,55: BLOCK 
137,7,90,132,55 

4990 STRIP#3,0: PRINT#3,TO 6; "I/O 
device" ; 

Blank$(l TO 6): STRIP#3,7: 
INK* 3,0 

5000 PRINT#3,\" [Fl] = flpl_ 
5010 PRINT*3, " [F2] = f lp2 " 
5020 PRINT#3,\" [F3] - mdvl" 
5030 PRINT#3, " [F4] = mdv2~" 
5040 PRINT*3,\" [F5] = other 

: REMark serl/ser2/etc. , okay 
5050 STP,IP*3,2: INK#3,7: 



PRINT #3, 



'; Label$;' 



5060 GR=0: fenetre=l: Key2: PickOne 
5070 SELect ON ke 
5080 =27: fenetre=0: File 
5090 =232, 70,102: Dvice$="flpl_ 
menu 

5100 =236, 71,103: Dvice$-"flp2_ 
menu 

5110 =240, 77,109: Dv.ice$="mdvl_ 
menu 

5120 =244 , 78,110: Dviea$=' T mdv2__ 
rne nu 

5130 -119, 87: Dviee$="winl ": menu 
5140 =120, 88: Dvi.ce$="vin2J ? : menu 
5150 =114, 82: Dvice$="raml_": menu 
5160 =116, 84: Dvice$=" ram2 ~" : menu 
5170 =248: IPdev 
5180 File 

5190 END SELect : END DEFine devo 
52.10 DEFine PROCedure IPdev 

: REMark "other" I/O device 
5220 BLOCK 54,10,162,100,7: stripe 
5230 AT 10,27: INPUT DviceS 
5240 IF LEN(Dvice$)<>5 THEN GO TO 
5220 

5250 IF Dvice$(5)<>" " THEN GO TO 
5220 

5260 IF Dv±ce$(4)<CHR$ (49) OR 
Dvice$ (4) >CHR$ (56) 

THEN GO TO 5230: ELSE devo 
5270 END DEFine IPdev 
5290 DEFine PROCedure File: 
CLOSE*5: CLOSE#6: 

MoreFile: SelectFile: END 
DEFine 

5310 DEFine PROCedure MoreFile: 

CLOSE* 5: CLOSE* 6 

5320 IF GR=0: COLOR=7: STRAP=S: 

PEN=0 

5330 IF GR-1: COLOR-31: STRAP=51: 
PEN=2 

5340 CLScreen 

5350 Cmd_Line: AT 1,7: STRIP 2: INK 
?i PRINT" FIIiBS "« etripo 



5360 ¥INDO¥#3,266,187,42,20 

5370 PAPER*3 , COLOR: BORDER* 3, 1,2: 

INK#3,0: CLS#3 

5380 BLOCK 268,8,46,207,55: BLOCK 

7,188,308,21,55 

5390 PRINT*3,\" [Fl] - "; : 

UNDER* 3, 1: 

PRINT#3, w O"# : UNDER#3,0: 
PRINT*3, "pen a database for 

SEARCHing" 

5400 PRINT#3,\" [F2] = 

UNDER* 3, 1: 

PRINT # 3 , " C" ; : UNDER* 3 , 0 : 
PRINT*3, "reate a new database" 

5410 PRINT#3,\" [F3] = "?: 

UNDER* 3, 1: 

PPJNT*3, "D" ; : UNDER* 3 , 0 : 
PRINT*3,"evices (change)" 

5420 BLOCK#3 f 262,45, 0,63,7: 

PA^ER*3 7 

5430 PRINT*3,\" [F4] = s";: 

UNDER#3,1: 

?RINT#3,"W"; : UNDER#3,0: 
PRINT*3,"itch "?Dvice$ & 

Sname$ & EXTen$ 

5440 BLOCK*3, 262, 45, 0,83, COLOR.: 

STRIP* 3, COLOR: 

PRINT#3,\" [F5] - "; : 

UNDER* 3, 1: 

PRI NT * 3 , "V" ; : UNDER* 3,0: 
PRINT*3, "erify ";Dvice$ & 

Sname$ & EXTen$ 

5450 INK*3,7: STR1P#3,2: 

BLOCK#3, 262, 40, 0, 105, 2 

5460 PRINT*3,\" [F6] = : 

UNDER* 3, 1: 

PRINT#3, "R" t : UNDER* 3, 0: 
PRINTI3, "eturn to ";Dvice$ S. 

Sname$ & EXTen$ 

5470 STRIP*3,0: 

BLOCK*3, 262, 60, 0, 125, 0 

5480 PRINT#3,\" fF7] = "; : 

UNDER* 3, 1: 

PRINT *3 , " S" f t UNDER* 3, 0 
PR1NT#3, "creen__edit ";Dv.ice$ & 

Sname$ & EXTen$ 

5490 PRINT*3,\" [F8] = "? : 

UNDER* 3, 1: 

PPJ.NT#3, "P" ; : UNDER#3, 0: 
PPJNT#3, "rinter Line Feeds ";: 

INK*3,5: 

PRINT # 3 , LnFd$ ; : INK* 3,7: 
PRINT#3," / Margin "? : 

INK* 3, 5: 

PRlNT#3,margin$ 

5500 INK#3,7: PRINT*3,\" [F9J - 

director" ; : 

UN DER* 3,1: PRINT * 3 , " Y" ; : 

UNDER* 3, 0 

5510 END DEFine MoreFile 

5530 DEFine PROCedure SelectFile 

5540 Key3: PickOne 

5550 YourChoice=ke 

5560 SELect ON YourChoice 

5570 = 27: out 

5580 =232, 111, 79: GR-1: Search 
5590 =234, 114, 82: GR=1: reSHOW 
5600 =236, 99, 67: GR=0: MoreFile: 
bop: xyz=0: 

MakeFile 
5610 =238, 115, 83: GR=0: 
MakeLabel: CLS 

5620 =240, 100, 68: GR-1: MoreFile: 
devo 

5630 =242, 112, 80: GR=0: 
SetJPrinter 

5640 =244, 119, 87: GR=1: switch 
5650 =248, 118, 86: CLScreen: 

COPY Dvioo$ S. Snamo? & SKTon? 



TO con_438X201A42X31: GR=0: 

PAUSE 

5660 =246, 121, 89: GR=1: direct: 
PAUSE 

5670 END SELect 
5680 File 

5690 END DEFine SelectFile 
5710 DEFine PROCedure switch 

: REMark change active 
Fi lename 

5 720 GR-1: MoreFile 
5730 CLStrip 

5740 AT 1,7: STRIP 2: INK 7: PRINT" 
NEW_NAME ": 
stripe 

5750 BLOCK 200,12,104,90,0 

5760 BLOCK 196,10,106,90,7 

5770 STRIP#3,7: AT 9,17: INPUT ' NEW 

Filename: 

SnameS 
5780 IF LEN (Sname$) =0: 
Sname$="GADDRESS" : 

BEEP 100,10 
5790 IF LEN(Sname$) >8: 
Sname$="GADDRESS" : 

BEEP 2000,20: GO TO 5720 
5800 GR=0: File 
5810 END DEFine NewjMame 
5830 DEFine PROCedure re SHOW: CLS: 
sedit: ReLabel: 

ShowJHF: END DEFine 
5850 DEFine PROCedure ReLabel 
5860 WINDOW 86,160,10,50 
5870 FOR l.a=l TO 10 
5880 PRINT L$ (la) 
5890 NEXT la: END FOR la 
5900 PRINT: PRINT 
5910 FOR la-11 TO 13 
5920 PRINT L$ (la) 

5930 NEXT la: WINDOW 86,40,260,170 
5940 FOR la=14 TO 16 
5950 PRINT L$ (la) 
5960 NEXT la 
5970 END DEFine 

5990 DEFine PROCedure direct: DIM 
di.r$ (384,24) 

6000 DELETE Dv.ice$ & "FLIST_imp" 
6010 OPEN_NEW*6,Dv.ice$ & 
"FLlST_imp" 

6020 DIR#6,Dvice$: CLOSE*6 

6030 OPEN IN*7,Dvice$ & "FLISTJLmp" 

6040 FOR c=0 TO 383 

6050 IF EOF (#7) THEN EXIT c 

6060 INPUT#7,dir$ (c) : END FOR c: 

^3jOSE * o~ c "j. 

6070 CLS*3: PAPER*3,7: INK#3,0: 
PRINT* 3 

6080 FOR n=2 TO c 
6090 dirY$=dir$ (n) 
6100 IF LEN (dirY$ ) >4 AND 
dirY$ (LEN (dirY$ ) -3 

TO LEN (di tY$ ) ) =— "_esp" : bop : 

PPJNT#3,TO 2;dirY$ 
6110 NEXT n 
6120 END DEFine 
6130: 

6140 CLScreen: CLStrip: bop 

6150 AT 1,8: INK 0: STRIP 5: PRINT" 

CAPS LOCK " ; : 

IF NOT PEEK_W (163976) : PRINT 
"off ": ELSE : 

INK 2: PRINT "ON ": stripe 

6160: 

6170 REMark * * * * * * * 

PLAY TY PUS Software 

•* **• **■ -k 



ZXir QLive Alive? 



32 



Spring 1997 



Place your ads here 

Maii to: A. KAHALE 3343 S FLAT ROCK CT 



it is free! 

SIERRA VISTA AZ 85835-6874 



SPECTRUM for your 2068 

If you are a LarKen LK-DOS owner and would like to run 
SPECTRUM programs on your system, we will supply a V2 
EPROM, socket and 74HCT32 for $12 which includes shipping and 
handling. The installation instructions are in your LarKen manual. 
We shall not be responsible for your install job. AERCO owners 
need only the EPROM for $10 forwarded to LarKen. 
Bob Swoger Address on page 2 



74 7 JHtglji jgiimnlaior 

So you like to fly, the 747 Flight Simulator for SPECTRUM by 
Derek Ashton of DACC. Requires a SPECTRUM equipped 2068. 
Supplied on LarKen SSDD or DSDD LarKen disk for $10 which 
goes to Derek now working at Motorola with Bob. 

Bob Swoger Address on page 2 



PRh Chips 
Programmable Array Logic chips arc available for 
some Timex and QL's from:- 

NAZIR PASHTOON 
NAP_Ware 
940 BEAU DR APT 204 
DES PLAINES IL 60016-5876 
Phone(eve.) 708 439-1679 



A Strategic Generic War Game for the TS-2068 

€ i i i I E I T 

> Available on tape, or disk, AERCO, Oliger. Game and map 
SAVEs in BASIC allows conversion to your system. 
y Completely in fast machine code. Games can be SAVEd and 
CONTINUEd. Price $19.95 + $2.50 S&H. 

Order from:- or> 
LLOYD DREGER SMUG 
2461 S. 79THST BOX 101 

WEST ALUS Wl 5321 9 BUTLER Wi 53007 

The John Oliger Co* 

11601 Widbey Dr. 
Cumberland IN 46229 
The John Oliger Floppy Disk System 
FOR THE TS-2068 

DiskWorks 
Expansion Board 
2068 User Cartridge 
Disk Boards "A" & "B" 
2068 Parallel Printer Port 
2068 EPROM Programmer 
2068/SPECTRUM Joystick Port 
DFh Mapped Universal I/O Port board 
Vpp Power Supply 
User Manual only : $5 . 00 (Read before you buy) 



Service Foi* M 
Favorite Home Computers and Their Accessories 

SS1CL1II 

TIMEX ADAM ATARI IBM OSBORNE 
TI COMMODORE TRS-80 
BUY SELL TRADE UPGRADE 



486DX2-80 Computer $600 + tax 

340 Meg. HD, 8MB RAM, 1.44 Floppy, Keyboard, Mouse, 
VGA color monitor. 

5 86DX- 133 Computer $ 775 + tax 

500Meg. HD, 8MB RAM, 1.44 Floppy, Keyboard, Mouse, 
SVGA color monitor 

686-P12©-f Computer $1025 + tax 

1 GB HD, 16 Meg. RAM, 1.44 Floppy, Keyboard, Mouse, 
SVGA color monitor 

14.4 Fax/Modem $45 
8X Multi-Media Kit $ 1 75 

Repair Charg e Examples 

TS-1000, ZX-81, 1016 RAMPaek, Memotech, ZEBRA Talker, 
MIRACLE Centronics, RAM Centronics. 
$5.00 each + pails & shipping. 
TS-2020, 2040, PC-8300, ZX--80, T7-99, Z-SIQ, Byte-Back, 
AERCO 2068 Centronics, BASICare, LarKen RAM Disk 
$10.00 each + parts & shipping. 
TS-2068, Spectrum, A&J MicrD, Miracle 51 2K, LarKen 1000 & 
2068 FDI, Kempston FDI, Cumana FDI, CST FDI. 

$1 5.00 each + parts & shipping. My 1,1996 
Reasonable flat rate plus parts and shipping. 
Write or call for prices S ASE appreciated 





RT 1 , BOX 117 
CABOOL MO 65689 
Phone 417 489-4571 41 7 467-4571 

PROFILE -ZX-81 (tic-tac-toe) 
ZX-TEXT - Word Processor 
ZX-CALC - Spreadsheet 
Business Software 

Cycle Accounting Financial Report Generator 
ZX-CALENDAR - Time Management 
ZX-81 TS-1000 TS-1500 



ZXir QLfve Alive! 



33 



Spring 3997 



TS-2068 
Albert F. Rodriguez 

F.R. Software 

1605 PENNSYLVANIA AVE 204 
MIAMI BEACH FL 33130 
305 531- 6464 

Wake David an Offer 

ZX-81/TS-1000 TS-2068 
Hardware Kits 
Real Time Clock I/O Controller RS-232 
Centronics i/F 1 6K & 64K RAM 300 BAUD 
Modem A-D Convertenassembied) 

538 LONG TER 
LEESVILLE SC 29070 



PLAIYFUS 



SOFTWARE 



QLAMBer $20 
QLuMSi $20 
QLUTter $20 
Upgrades $5 



fit i #«f 

914 RIO VISTA CIR SW 
ALBUQUERQUE NM 87105 
(505) 843-841 4 



Get In Touch 



810 254-9878 

24 hours a day 
300 to 1 4400 bps 
Supporting all Sinclairs and Timex users 
Fidonet echomail areas for Sinclair computers 
Lots of new files for you to download such as 

TS-2068 emulator for those who use a PC 
Give us a call and let us know what you want to see 
Message Area & File Area 
QL International, Quanta, QL Hackers Journal, 
Spectrum/2068, ZX-81/TS-1Q00, Z88, NetMail, 
Emulators, Pointer, FDFORMAT for QXL/QDOS etc. 
SYSOP John J. Impeliizzeri 
Co-SYSOP Don Walterman 
Utica, Michigan, USA 
'How-To' is in the April, 94, UPDATE! Magazine 




ARCHIVE Based QL Software 

QLerk - A complete financial program for the QL 
QLerk software (v3.21) with tutorial $29 
QLerk manual $29 
QLerk software & manual $50 

DBEasy - A menu based database system 
DBEasy software (v1 .6) $24 
DBEasy upgrade from V1 .5 $7 

DBProgs - A toolkit of ARCHIVE procedures 
DBProgs software (v1 .8) $1 8 

DBProgs upgrade from V1 ,7 $7 

DBTutor - A general purpose learning program 
DBTutor software(v1 .5) $12 

PC DBEasy - Just like QL DBEasy but, you 
must have PC ARCHIVE to use It. 
PC DBEasy software (v1 .3) $ 1 2 

WOOD & WIND COMPUTING 
RR3 BOX 92 
CORNISH NH 03745 USA 
Phone (603) 675-2218 
Email : bcable@triton.coat.com 



omino 



Cub 



e $ 



Hardware S Software 

352 7 th Ave. 1 5 th Fir. 
New York, NY 10001 
Phone 212 631-7563 
Fax 212 947-5069 
Voice mail pager 917 490-8407 

LIST er 

Tke Long IsLuui Sh&ol&h?flimB,®?£. Users Group 

L. I. S. T. 

HARVEY RAIT 
5 PERI LN 
VALLEY STREAM NY 11581 



New England Sinclair QL Users Group 

16 HIGHLAND AVE 
SAUGUS MA 01906 
617 233-3671 



ZXir QLive Alive! 



34 



Spring 1997 




Supporting All QL Programmers 



Timothy Swenson, Editor 

38725 LEXINGTON ST 230 
FREMONT CA 94536 
(510)790-7034 
Email: swensont@projtech.com 



xV J. o Newsletter 

The Capital Area T/S Users Group 

BARRY WASHINGTON 

7044 CINDY LN 
ANNANDALE VA 22003 
301 589-7407 
BBS 301 588-0579 
Internet mf0002@epfl2.epflbalto.org 





Chicago Area Timex Users Group 
PHILLIP KWITKOWSKI 

2106 DOVER LN 
ST CHARLES IL 80174 
803 584-6710 




Newsletter 

The Greater Cleveland T-S User Group 

Thomas Simon editor 

615 SCHOOL AVE 
CUYAHOGA FALLS OH 44221 
E-Mail CIS 73177,333 

Jon Kaczor production 
4568 WILLIAMSON AVE 
BROOKLYN OH 44144 
75363.1 127@COMPUSERVE.COM 



Peter Liebert-Adelt 
LUETZOW STR 3 

D-38102 BRAUNSCHWEIG 
GERMANY 

Email: p.iiebert@t-oniine.de 



TS-2068 books: 

1 Technical Manual - Time Designs Magazine 

1 The Timex Sinclair 2068 Explored - (Tim Hartnell) 

ZXir QLive Alive! 



1 T/S 2068 Basics And Beyond - (Sharon Z. Aker) 

2 User Manuals - T/S 2068 Personal Color Computer 
1 Beginner/Intermediate Guide (Fred Blechman) 

1 Intermediate/Advanced Guide (Jeff Mazur) 
1 Pro/File 2068 (Thomas B. Woods) 

TS-IOOO &ZX-81 books: 

3 User Manuals (1000) 

1 T/S 1000/ZX81 User's Handbook (T. Terrell & R. Simpson) 
ZX81 Basic Book (Robin Norman) 
1000/ZX81 Basic Book (Robin Norman) 
ZX81 BASIC Programming (Steven Vickers) 
ZX81 Programming For Real Applications (Randle Hurley) 



37 Timex 1000/Sinclair ZX81 Programs For Home, 



School, Office (Edard Page) 
1 Brain Games (John Stephenson) 
1 Hie Explorer's Guide - ZX81 & T/S 1000 (Mike Lord) 
1 Mastering Machine Code - T/S 1500/1000 (Toni Baker) 
8 QuarTerS - Spring/85 through Winter/86 

1 (SQ) Syntax Quarterly VoL2#l 
28 SUM August/84 thru July/86 

2 Sync (Special issue) 1982? 

6 Sync Vol.3 #3 through Vol.4 #2 

12 Syncware News Vol.2 #1 through Vol.3 #6 

1 " " "(Catalog) Vol. 1 June/83 thru June/84 

6 Syntax Vol.3 #3 and Vol.5 #7 thru #1 1 

17 Time Designs Vol.#3, #6, VoL2 #1, #5, #6 

Vol.3 #1 Through Vol.4 #6 
8 Timex Sinclair User Vol.1 #1 through #7 
21 T-S Horizons Issue #1 through #21 
28 UPDATE Jan.88 through Oct. 94 

Hardware 
1 TS-2968 computer - Never been used. 
1 Amdek (# AMDISK III) dual disk drive. 
1 Used TS-2040 printer with 3 extra rolls of paper. 
1 Used Zebra FDD disk drive. Good for spare parts. 
1 Westridge TS-2050 modem, rarely used. 
1 ProScan FX-200, never used. 

Make an Offer ©n Any Item or All 

Fred Henn 
230 N FRENCH RD 
AMHERST NY 14228-2033 
Ph. & Fax 716 691-9495 ^ 

WANTED: TS-1500 Keyboard in working condition, new or 
used. 

GORDON MANSKE 
21 47 S 30th ST 
MILWAUKEE, Wl 53215 
414 645-5384 

WANTED." MicroAce, T/S-1500, CZ1000/1500, TKS2/83/ 85 
and each MEMOTECH module for ZX81 except memory 
modules 16k and 32K and printer I/F. Write to: 
PETER LIEBERT-ADELT 
LUETZOWSTR. 3 
D-38102 BRAUNSCHWEIG 
GERMANY 
E-mail: P.Liebert@t-online.de 

FOR SALE: Radio Shack CGP-115 Color Graphic Printer 



35 



Spring 1997 



/Plotter, like new condition, $65.00. 

QL Computer, new, never used. Package includes: Trump Card 
(768K), P/Supply, manuals, extra motherboard (if wanted), 
printer cable and 24 Micro-Drive cartridges (10 preprogrammed 
and 14 blank) $125. 

WANTED: PC Magazine, Vol. 3, No.. 23 (Nov,. 27, 1984) 
and/or Vol. 6 No. 19 (Nov., 1987). Also "Printers" issue 
between 1990 - 1993. 

D G SMITH 
415 STONE ST. 

JOHNSTOWN PA 15906-1609 
(814) 535-6 998 

WANTED: Terminal program(s) to run TS-2050 modem on 
TS-1000 and TS-2068 in cassette format. Machine code tutor 
for the 2068 (Knighted Computers -- 2 cassettes) or similar for 
2068 or 1000. 

DOUG WAGONER 
E 4825 ST ANTHONY LN 
POST FALL ID 83854-8812 



ANTED: All information about ColorWorks or plus + 
Color Graphics, distributed by Plus + Pac System International, 
Chicago. Write to; 

HENNING RAEDER 
EMMERICHER STR. 35 
D-46147 OBERHAUSEN 
GERMANY 

WANTED: Any books and/or information on the ZX-81 
ROM and ULA chips. Write to: 

JOSE MORENO 

1871 N GLADES DR APT 3 

N MIAMI BEACH FL 33162 

SALE; 1 3- Year Collection of T/S Computers 

2 - QL's with QL printers and many spares and 

accessories. 

3 - TS-2068' s with printers and many spares, acc. And 

many S/W. 

1 - TS-2068 CMOS motherboard with spares and acc. 
1 - TS-2068 Oliger DOS system built into IBM style 

case, complete with parallel printer port and CGA 

monitor. Many spares and acc. 
1 - TS-2068 Oliger EPROM programmer, cartridges and 

EPROMs and many spares and accessories. 
TS-1000, TS-1500, PC3800 and their accessories 

For complete list, send a SASE to: 

R. A. JELEN 
11443 ISLAND RD. 
GRAFTON, OHIO 44044 
or call (216)748-3830 for details 



FOR SALE 960101 Half Height Quad Density 5.25" (720K) 
Floppy Disk Drives. $25 each or 10 for $150. 

5 IBM XT 10MHD640K RAM 360 FDD monochrome 
monitor & keyboard serial and parallel ports $200 

IBM 286 20M Hard Drive 1MRAM1.2M and 1.44M Floppy 
Drives monochrome monitor & keyboard serial and parallel ports 
$350 

Computer Classics 

RT1,Box117 



Cabool MO 65689 
417-469-4571 




Tlae Fiaai Version 

Newly updated, easy-to-read, LarKen 
LKDOS ver.3 Manual 

Includes missing information related to the JLO and the 
Tasman 'B' CPL mouse and re-numbering program. 

Updated version 6.0 LogiCall Manual 

with sections on utilities and BASIC drivers for 
modified commercial software and switching system 
ROMs without powering down. 

Available now for $1 5 from 
FWD Computing & RMG Enterprises 

From Scotland 



MOT/ VA Tl 



The New Name in Sam Coupe Software 
Zenith Graphics & MOTIVATION presents 

Edition 1 £4.00 Or all 3 editions for £10 
Edition 2 £4.00 

Edition 3 £4.00 Pius an extra FREE disk 

called EXTREME (Issue 0) 
The Edition Trilogy of disks are packed full with loads of 

good, addictive and playable games, demos plus 
amazing utilities and if bought with Extreme, you'll also 
enjoy many scarce and some never released programs! 
Single Extreme issue costs only £1 .75 
So don't delay — Post today 
We want to act as an outlet where we can put new Sam Coupe 
owners in touch with other Sam owners and organizations. 

Spectrum software on tape 
We are now selling NEW Elite utilities: Notepad 1.0 
(WP), Prowriter (Notepad 2.1), Dirman (51 2K only) 

£4.99 

Please send your money orders and contributions to: 



ALEC CARSWELL 
MOTIVATION 
16 MONTGOMERY AVE 
BEITH AYRSHIRE KA1 5 1 EL 
UNITED KINGDOM 

The ZX Spectrum 48/128 Emulator 
for IBM & Compatables: ZSO Version 2.01 

Turn your PC into a realZX Spectrum 48/128! 
The fastest, most cornpatble and most complete emulator 
available! Main features: 
=>~ Full Spectrum emulation, border, flash, beeper, Interface 1, 
Microdrive in cartridge file, RS232 input and output redirection 
to fife, COM or LPT, joystick support, 128K sound through 
Soundblaster or internal speaker, built-in. monitor, 



ZXir QLrve Alive! 



36 



Spring 1997 



=>- Able to load ANY, even protected or speed-saved program 
from tape, to save to tape., to redirect tape loads and saves to 
disk for easy 'file access, 

=>- 2500 line English documentation, frequently-asked- 
questions file, PostScript file of doc, keyboard help screen, 
utilities to convert Spectrum screens to -.GIF and .PCX files, 
convert snapshot files and tape files from 5 other Spectrum 
emulators to own format and W to read DISCiPLE and +D 
disks. 

=>- Z80 processor amulabon including R register, inofficial 
instructions, inofficial flags, 

=>- Runs okay wider DOS, Windows and DesqView, 
=>- Full source code of emulator and utilities included! 
Runs on any 640K PC; too slow for practical use on PC/XT' s 
but fast enough on AT's ; runs at about. 100% on 16MHz ATs 
(can be slowed down on faster machines), uses 
VGA/EGA/CGA or Hercules. 
This program costs US $20. You will receive a 3.5" DD disk 
(5.25" disks on request), and you'll be kept informed about 
updates. Please send bank notes (bills), name and address to: 

Gerton Lunter 

PO BOX 2535 
NL-9704 CM GRONINGEN 
NETHERLAND 
If you send a cheque, please add US $15 extra and allow A 
weeks for delivery. 




What is it? 

Like QL World and IQLR before. QL Today is a general 
magazine for everybody who has a QL or compatible. It Will 
contain, listings of events, news, reviews of hardware and 
software, meeting reports, articles on programming, 
explanations of computing mysteries, histories of QL alumni. 
We are attempting to carry on from where IQLR left off but will 
improve things in the process. Most of alL though, we need 
plenty of feedback from readers so that the magazine can 
provide what you actually want. 
Who is doing It? 

QL Today is being published by Jochen Merz Software. 
Jochen Merz has been supplying software for the QL for 
several years and has built up a good reputation for quality and 
fair trading. The representative in Britain is Miracle Systems 
Ltd. who take subscriptions and do the distribution. The 
articles in the magazine are written by a number of prominent 
QLers and the editor is Dilwyn Jones. 
What happened to IQLR? 

Bob Dyl suffered another heart attack and has decided to 
cease producing IQLR. It also appears that it was not profitable 
for him to carry on doing it partly owing to high cost of 
sending the magazines from USA to Europe where most QL 
users are. 

What's happening about the remainder of my IQLR sub? 



If you subscribed through Miracle Systems (i.e. you were 
issued an invoice) or through Jochen Merz Software then you 
will get the number of QL Today issues free of charge that you 
are owed by IQLR. If you have an outstanding subscription to 
IQLR purchased through a different channel then tell us - you 
will be eligible for l A price issues to substitute for IQLRs you 
are owed provided you take out a subscription starting with the 
May/June 96 issue. 

Subscriptions: 
Germany (+German add-on) DM 70 
England DM 60 £25 

Rest of the world DM 70 £30 

Back-issues are available for DM 12 find, postage) 
Checks should be made payable to Jochen Merz Software or 
Miracle Systems Ltd. 

German Office: 
Jochen Merz Software Tel 
1m stilien Wlnkel 12 Fax. 
47169 Duisburg Boxl 
Germany Box2 

English Office: 
Miracle Systems Ltd. Tel. 
20 Mow Barton Fax. 
Yates, Bristol 

United Kingdom BS17 5NF 
Editor 

Dilwyn Jones Tel. 
41 Bro Emrys Fax. 
Tal-Y-Bont, Bangor, Gwynedd 
United Kingdom LL57 3YT 



+49 203 502011 
+49 203 502012 
+49 203 502013 
+49 203 502014 

+44 1454 883602 
+44 1454 883602 



+44 1248 354023 
+44 1248 354023 



liiiiiB 



•Jack Dohany (Developer - 2088) 
627 VERA AVE 
REDWOOD CiTY CA 94081 

John McMichael {Developer - Graphics) 
1710 PALMER DR 
LARAMIE WY 82070 

Biii Russell (QL) 
RUSSEL ELECTRONICS 
RR 1 BOX 539 

CENTER HALL PA 18828 

TEJ Computer Products 
2405 GLENDALE BLVD STE208 

LOS ANGLES CA 90039 
24 Hr. Order line: 213 669-1418 

Mark Stueber (QL) 
SHARP'S COMPUTER CENTER 
7244 MECHANICSVILLE TPKE 
MECHANICSVILLE VA 231 1 1 
804 730-9697 FAX 804 746-1 978 

SUNSET ELECTRONICS (TS-1 000/2068) 
2254 TARAVAL ST 
SAN FRANCISCO CA 94116 



ZXir QLive Alive 



37 



Spring 1997 



Send them a LSASE and ask for information about 
their current products and/or services. 



[G Enterprises Is Still Alive 
If you would like a complete listing of all the items we have fo 
sale, please send a large envelope (6X9) SASE with at least $.81 
postage on it. You will receive more than 20 pages of listings. 
For questions or comments, feel free to call or write. 




14784 S QUAIL GROVE CiR 
OREGON CITY OR 97045-8844 
503 655-7484 1 0AM - 7PM (Pacific) Tues. - Sat. 



; tsumm 




Formerly: Mechanical Affinity 



aj 



^eeds 



zx-siyrs-tooo 
Computers 
Hardware Accessories 
Software 
Frank Davis 
FO Box 1 7 



317-473-8031 Tues. - Sat. Only, 6 - 9 PM 
FAX: 317 472-0783 7PM- 1 1AM 
E-Mail: INTERNET:fdavis@iquestnet 
IIttp://members.tripod.com/~FWDcomputing/index.html 



Computer 

Basic Z88 Computer, vinyl carrying case and manual, new $170 
Z88 Computer, vinyl carrying case, used in working order $1 15 
Z88 Computer, non-working for parts. $60. 

EPROM Cartridges 
32K for $20 or (3) for $50, 1 28K for $52, 256K for $77. 

RAMs 
32K RAM Cartridge for $25. 
1 28K RAM Cartridge for $46 
512K RAM Cartridge for $90. 
1 Meg. RAM Cartridge for $172. 
Z88 to Mac Cables for $8. 
Z88 Serial Printer Cable for $10. 
Z88 Serial to Parallel Printer Interface for $46. 



MACLINK to Z88, Macintosh to Z88, cable, program, cartridge 

for $26. 

PCLINK to Z88, PC to Z88 cable, program, cartridge for $26. 
Both PCLINK & MACLINK for $50. 
QLINK to Z88, QL to Z88 programs $20. 
AMIGALINK, Amiga to Z88 disk, cable, cartridge for $27. 
Topper, molded hard plastic cover to protect Z88 for $22. 
Z88 MAGIC, best book available for the Z88 for $25. 
BBC BASIC, use this book and learn to My use the built-in 
language of your Z88 computer, limited supply, priced at $30. 
Z88 Source Book 3rd edition, with your choice of 3 QL or PC 
format disks of PD & Shareware programs for the Z88 for $9. 

Z88 Vinyl Carrying Case for $9. 
NEW!! Z88 Keyboards for replacement, only $22. 
Replacement LCD for $25. 



ZXir QLwc Alive! 



38 



Spring 1997 , 

■x ■ ■